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" ","