shell脚本的建立与执行
建立
建立shell脚本的方法和建立普通文件的方式相同
例如:
vim myinfo.sh
执行
- sh命令
- ./脚本名
- 脚本名
shell脚本中的变量
- 注释 : #
- 取变量 : $
- 特殊字符转为普通字符 : \
- 被单引号引起来的字符会原样输出
- 数值中间包含空格要用()括起来
- 清除变量 unset
- set 显示本地所有变量
- env 可以看所有环境变量
位置变量
假设某个shell脚本名为test,执行时带三个参数,则shell解释执行时位置变量0的内容为test,位置变量1的内容为参数1,依次类推。
其他变量
-
变量
该变量存放传递给shell脚本命令行参数的个数 - ?变量 该变量存放 Shell 脚本中最后一条命令的返回码。在 Linux系统中,每条命令执行完后都会返回1个值,这个值称为返回码。一般,执行成功时返回0,执行不成功时返回非0的值。Shell脚本的最终返回码也就是最后一条被执行命令的返回码。
- '*' 或 '@' 变量 该变量存放所有输入的命令行参数,并且每个参数之间硬空格隔开。
流程控制语句
if语句
基本形式:(不要忘记fi)
if
then
else
fi
多路判断if语句
if
then
elif
then
...
else
fi
其中elif是else if的缩写
测试语句
文件测试
- -r file 若文件存在并且是用户可读的,则测试条件为真
- -w file 若文件存在并且是用户可写的,则测试条件为真
- -x file 若文件存在并且是用户可执行的,则测试条件为真
- -f file 若文件存在并且是普通文件,则测试条件为真
- -d file 若文件存在并且是目录文件,则测试条件为真
- -p file 若文件存在并且是 FIFO 文件,则测试条件为真
- -s file 若文件存在并且不是空文件,则测试条件为真
字符串测试
- str :如果字符串 str 不是空字符串,则测试条件为真
- strl = str2 :如果 str1 等于 str2,则测试条件为真(注意:“=”前后须有空格)
- strl != str2 :如果 str1 不等于 str2,则测试条件为真
- -n str :如果字符串 str 的长度不为 0,则测试条件为真
- -z str :如果字符串 str 的长度为 0,则测试条件为真
数值测试
- nl-eq n2 :如果整数 n1 等于 n2(n1n2),则测试条件为真
- nl-ne n2 :如果整数 nl 不等于 n2(n1>n2),则测试条件为真
- nl-lt n2 :如果 n1 小于 n2(nln2),则测试条件为真
- nl-le n2:如果 n1小于等于 n2(nl<=n2),则测试条件为真
- nl-gt n2:如果 n1 大于 n2(n1>n2),则测试条件为真
- nl-ge n2:如果 n1 大于等于 n2(n1>=n2),则测试条件为真
for语句
for 后边加条件
do
循环语句
done
while until
while 当条件为真时执行 until 当条件为假时执行
break continue
break [n] n代表跳出几成循环 continue 跳过循环体后在他之后的语句 这两个都要写在循环中
算数表达式
与其他编程语言一样,Shell 也提供了丰富的算术表达式
1.算术表达式
Shell 提供五种基本的算术运算:+(加)、-(减)、* (乘)、/(除)和%(取模)。Shell 只提供整数的运算。
格式:expr nl 运算符 n2
例子如下:
[root@localhost~]# expr 20 - 10
10
[root@localhost~]# expr 15 \*16
240
[root@localhost~]# expr 15 % 4
3
注意:在运算符的前后都留有空格,否则 expr 不对表达式进行计算,而直接输出它们。表示“乘”的运算符前应加一个转义符“\”。
退出脚本程序命令
在Shell 脚本中exit 命令是立即退出正在运行的Shell 脚本,并设有退出值格式:exit[n]其中 n 为设定的退出值,如果未给定 n 的值,则退出值为最后一个命令的执行状态