编写shell脚本
1、shell脚本的第一行指定要使用的shell,其格式为:#!/bin/shell
2、执行shell脚本
- 将shell脚本文件所处的目录添加到PATH环境变量中
- 在提示符中用绝对或相对文件路径来引用shell脚本文件
3、检查shell脚本执行权限,若无权限,使用chmod赋予执行文件的权限
4、显示消息
- echo +text:如echo This is a test
- echo+包含引号的text:使用单引号或双引号将字符串圈起来,如:echo 'say "bye"',echo "Let's go"
- echo -n +"text: ":在字符串同一行显示命令输出
5、脚本中的$符号为引用过一个环境变量,可以通过\来转义,实现$本身的意义,如:\$15。
6、用户变量可以是任何不超过20个字母、数字或下划线的文本字符串,用户变量区分大小写。值通过等号赋给用户变量,且变量、等号和值之间不能出现空格,如:var=11。
7、重定向
- command >outputfile:输出重定向,将命令的输出发到outputfile文件中,outputfile可以新建或覆盖
- command >>outputfile:输出重定向,将命令的输出发到outputfile文件尾部,outputfile可以新建或尾部追加
- command <inputfile:输入重定向,将文件的内容重定向到命令
- command << marker
data
marker
在命令行输入重定向的数据
- command | command |command:命令重定向,将一个命令的输出重定向到另一个上
8、数学运算
- 使用美元符和方括号$[operation]将数学表达式圈起来,如:var1=$[1+5]
- 使用bc支持浮点运算,格式:variable=`echo "options;expression" | bc`,如:var1=`echo "scale 4;3.14/5" | bc`
9、状态码
- 查看退出时的状态码:echo $?
- 声明退出的状态码:exit num
10、结构化命令
- if-then-else:
if command
then
commands
else
commands
fi
- 嵌套if:
if command1
then
commands
elif command2
then
commands
fi
- test命令:[ condition ](注意空格),可以判断三类条件:数值比较、字符串比较、文件比较,如:
if [ condition ]
then
commands
fi
- (( expression )):expression可以是任意的数学赋值或比较表达式
- [[ expression ]]:expression可以定义一个正则表达式来匹配字符串值
- case 命令
case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) commands;;
esac