创建shell脚本
- shell脚本第一行为指定具体shell来运行该脚本,可以指定shell(待验证)
echo
-
使用echo输出时,可以使用-n参数来不进行换行,例如
echo "Today is :" date
环境变量
- 可以使用
set
命令查看全部环境变量 - 可以使用
$
查看具体环境变量,通过echo $evnName
,如果要使用echo输出$符号,可以使用转义符echo \$
,通常可以使用${varName}
来代替$varName
,多增加的两个花括号用来帮助识别后面的变量名
用户变量
- 用户变量长度最大为20个字符
- 能够区分大小写
- 变量赋值时不能在
=
与变量中间存在空格,即varA="var a"
-
命令替换,即将命令输出赋值给变量(是执行完后将结果赋值给变量),通常可用:
- `反引号
- $() 格式
输入、输出重定向
-
输出重定向分为:
>
覆盖写;>>
追加写 -
输入重定向分为:
<
从文件读取;<<
内联输入重定向 -
内联输入重定向需要指定文本标记(marker)来确定开始与结束, marker可以任意指定,习惯性使用EOF:
./test.sh << marker ... marker
管道—— |
ls -lrt | wc -l
- 通过管道将输出传给后面的命令,不会用到任何中间文件与缓冲区
数学运算
expr命令
varTest=$(expr $var1 / $var2)
-
能够识别少量的数字和字符串操作符,包括:
ARG1 | ARG2 如果ARG1既不是null也不是零值,返回ARG1,否则返回ARG2 ARG1 & ARG2 如果没有参数是null或零值,返回ARG1,否则返回0 加、减、乘、除、取余、比较 模式匹配 截取字符串 查找字符 ……
-
对于
*
乘要转义为\*
,否则会作为通配符处理 -
运算结果赋值给变量要通过$()或者``
数学运算符——方括号[]
varTest=$[$var1 * $var2]
- 只能进行整数运算
- bash shell中使用$[]可以进行数学运算并将结果赋值给变量
浮点数运算——bc
scale=4
bc 12.73 / 16
- 浮点运算精确度由内建变量
scale
控制的,若未设定则无法得到期望结果 - 在bash shell中使用:
-
简单计算,使用管道+命令替换:
varTest=$(echo "scale=4; 12.73 / 16" | bc)
-
复杂计算,多个计算式,使用内联输入重定向:
t1=12.73 t2=16 vartTest=$(bc << EOF scale=4 var1=(12.1*2.1) var2=($t1 / $t2) var1 + var2 E0F )
-
退出脚本
shell命令退出时会返回退出状态码(exit status),默认情况下,shell脚本会以脚本中最后一个命令的退出状态码退出
- 查看退出状态码:
$?
- 成功结束状态码为0,有错误时状态为正数值,其中:
- 无效命令(command not found)会返回的退出状态码为127
- 用户没有执行命令的正确权限会返回126
- 给某个命令提供了无效参数会返回1,1代表发生了一般性未知错误
自定义退出状态码——exit
由于退出状态码为[0, 255],自定义的退出状态码会进行模运算除以256取余,例如:
exit 300
通过$?
得到的退出状态码为44
参考文章
Linux Command Line and Shell Scripting Bible
该系列其他文章请查看:
Linux命令行与shell脚本
网友评论