当前位置: 首页 > news >正文

shell脚本总结11

目录

  • 前言
  • 正文
  • 分析
    • 知识点1:read命令的使用
    • 知识点2:|(管道符)命令的使用
    • 知识点3:tr命令命令的使用

前言

shell 是一种脚本语言。脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)。

正文

上几篇文章,我们学习了很多shell控制流,今天我们来研究一个示例。

#从键盘输入10个数字,并输出最大值和最小值

printf "请输入十个数字: "  
read   
biggest=$(echo "$REPLY" | tr ' ' '\n' | sort -rn | head -n1)  
smallest=$(echo "$REPLY" |  tr ' ' '\n' | sort -rn | tail -n1)  
echo "最大的数字为:  $biggest"  
echo "最小的数字为:  $smallest"

结果如下

1 2 3 4 5 6 7 8 9 0最大的数字为:  9
最小的数字为:  0

分析

知识点1:read命令的使用

语法:
read [选项] 变量名1 [变量名2 …]
示例1:

read -p "Enter name and age: " name age
echo "$name"
echo "$age"

结果如下:

Enter name and age: xim 20
xim
20

示例2:

read -a arr
echo "${arr[0]}"
echo "${arr[1]}"
echo "${arr[2]}"
echo "${arr[3]}"
echo "${arr[4]}"

结果如下:

1 2 3 4 5
1
2
3
4
5

示例3:

read -a info -p "输入姓名、年龄、性别: " echo "${info[0]}"
echo "${info[1]}"
echo "${info[2]}"

结果如下:

输入姓名、年龄、性别: xiaoming 20 男
xiaoming
20
男

常用选项

-p:指定提示信息,比如read -p "Enter your name: " name,这样用户会看到提示信息。
-s:静默模式,输入不显示在屏幕上,适用于密码输入。
-a:将输入读取为数组,例如read -a array,输入的内容会按空格分隔存入数组。
-n:限制输入的字符数,例如read -n 3只读取3个字符,输入满后自动继续,无需回车。
-t:设置超时时间,单位是秒,超时后命令退出,返回非零状态码。
-r:原始读取,不转义反斜杠字符,常用于处理文件路径中的特殊字符。
-e:在交互式Shell中使用Readline库进行输入,提供行编辑功能。

知识点2:|(管道符)命令的使用

在Shell中,管道符|用于将前一个命令的标准输出作为后一个命令的标准输入。

echo "hello" | tr 'a-z' 'A-Z'

结果如下:

HELLO

知识点3:tr命令命令的使用

tr是translate或transliterate的缩写,主要用于字符替换、删除、压缩等操作。

转换大小写:

echo 'Hello' | tr 'a-z' 'A-Z'
HELLO。

删除字符:

echo 'Hello123' | tr -d '0-9' 
Hello。

压缩重复字符:

echo 'Hellooo' | tr -s 'o' 
Hello。

替换字符:

#这里每个字符逐个对应替换,即e→E,l→L
echo 'hello' | tr 'el' 'EL' 
hELlo

使用字符类:

echo 'HeLlo' | tr '[:lower:]' '[:upper:]'
HELLO

#将输出结果用逗号分割

--e"
select 
count(1) as mark_num
,min(begin_date) as begin_date
,max(end_date) as end_date
from  default.testtable
"| tr "\t" ","
http://www.xdnf.cn/news/701299.html

相关文章:

  • 华为OD机试真题——矩形绘制(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 数据库表与实体类设计
  • 中望CAD与AutoCAD的SWOT对比分析(基于2025线上发布会观察与行业数据)
  • 阿里云云效对接SDK获取流水线制品
  • C++模板语法大全
  • Rust 的Hello World
  • 在qt中使用c++实现与Twincat3 PLC变量通信
  • 知行之桥如何将消息推送到钉钉群?
  • 前端面经 hook 获取dom元素
  • Cookie与Session简介-笔记
  • 代谢测定试剂盒_生化制剂_Sigma-Aldrich®实验室用品及生产材料
  • FastApi学习
  • AMBA-AHB的控制信号
  • jenkins部署slave动态节点
  • java 开发中 nps的内网穿透 再git 远程访问 以及第三放支付接口本地调试中的作用
  • 使用 find 遍历软链接目录时,为什么必须加 -L
  • 华为OD最新机试真题-按单词下标区间翻转文章内容-OD统一考试(B卷)
  • 【案例95】“小”问题引发的“大”发现---记一次环境修复
  • 十六进制数据转换为对应的字符串
  • Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析
  • Java+POI+EXCEL导出柱形图(多列和单列柱形图)
  • 外骨骼驾驶舱HOMIE——3500元让人形机器人1:1复刻人类动作:类似Mobile ALOHA主从臂的主从分离版
  • 深度学习入门:从零搭建你的第一个神经网络
  • Vue3对接deepseek实现ai对话
  • 系统性学习C语言-第十讲-操作符详讲
  • javascript中运算符的优先级
  • 如何把示例数据0.617、0.229、0.174保留两位小数,并在后面添加%处理,处理后的结果如下:61.7%、22.9%、17.4%
  • Java | 韩顺平 循序渐进学Java自用笔记---OOP高级(二)
  • Kaggle-基于xgboost的销量预测
  • Java基础 Day23