创建shell脚本
- 脚本头添加: #!/bin/bash
- 书写shell脚本内容
- 给予执行权限.
变量
变量申明:kmj=kemengjian
- 等号左右不能有空格
- 变量名区分大小写
- set 查看当前所有环境变量
环境变量调用方式 $kmj,${kmj}
命令替换
将命令输出替换为变量
两种方式: `date`,$(date)
例: echo `date`,echo $(date)
在命令行提示符下
- 使用路径运行命令,会创建子shell.
- 子shell不能继承父shell的变量.
重定向输入输出
输出重定向
命令结果重定向到文件:
- 若存在同名文件,则文件覆盖.若文件不存在则新建.
rpm -qa > rpm.list - 若存在同名文件,则文件追加.若文件不存在则新建.
rpm -qa >> rpm.list
输入重定向
将文件的内容重定向到命令:
从文件中读取数据,sort < rpm.list
内联输入重定向.
wc << EOF
> test string 1
> test string 2
> test string 3
> EOF管道
将一个命令的输出作为另一个命令的输入.rpm -qa | sort | more(centos发行版).
执行数学运算
expr命令
expr 20 \* 5
使用起来比较麻烦需要转义.只能进行整数运算,不能进行浮点运算.
也能简单的处理字符串 echo $(expr substr kmj123456 3 6)
使用方括号
$[$var1 * ($var2 - $var3)]
不用转义,而且也只能进行整数运算
浮点解决方案
bash shell内建的浮点计算器bc 例子:
#!/bin/bash
var1=21;var2=34;var3=213;
echo $var1*$var2/$var3
echo $(echo "scale=4;$var1*$var2/$var3" | bc)
echo "内联式输入重定向" $(bc << EOF
scale=5
42.1*12.5/3.14
EOF
)退出脚本
查看退出状态码
shell中运行的每个命令都使用退出状态码(exit status)告诉shell它已经运行完毕.退出状态码是一个0~255的整数值(如果执行成功,则返回0;否则返回其他值),在命令结束运行时由命令传给shell.可以捕获这个值并在脚本中使用.
$? 保存上个已执行命令的退出状态码.
date;echo $?
exit命令
默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出. exit 命令允许你在脚本结束时指定一个退出状态码.
#!/bin/bash
# testing the exit status
var1=10
var2=30
var3=$[$var1 * $var2]
echo The value is $var3
exit $var3执行脚本后,可以使用 echo $? 来查看退出状态码.