shell分为两大类:
Bourne shell (包括 sh, ksh, bash):Bourne shell ( sh),Korn shell ( ksh),Bourne Again shell ( bash),POSIX shell ( sh)。
C shell (包括 csh and tcsh):C shell ( csh),TENEX/TOPS C shell ( tcsh)。
shell调试:常用echo打印变量值;真实的调试模式-sh -x shellscript.sh,执行脚本并打印所有变量的值;只检查语法的调试模式-sh -n script.sh,返回语法错误。
流程控制语法如下:
#if语句
if...;then
...
elif..;then
...
else
...
fi
#case语句
case...in
..) something;;
esac
#select语句,与用户进行交互
select var in...;do
...
...$var can be used...
done
...$var can be used...
#while循环
while [ 条件1 ]
do
...
done
#until
until [ 条件 ]
do
done
#for循环
for (( 条件1; 条件2; 条件3 ))
do
done
for var in...
do
...
done
注意的是: select是bash的一个扩展应用,所以 头语句应该为“#!/bin/bash”,否则select无法使用。select的效果是列出变量,等待用户选择。
补:与用户进行交互,除了select,还有read命令,用法“read var”,获得用户的输入并赋值给变量var。
if/while中的条件判断通常使用“[]”来进行条件测试。
[ -f "xx" ]:判断是否为一个文件
[ -x "xx" ]:判断是否可执行
[ -n "$var"]:判断var是否有值
[ "$a"="$b"]:判断变量a和b是否相等
其他有对文件的测试还有:
-d 目录
-s 文件非空
-f
正规文件
-w
可写
-L
符号链接
-u
文件有
suid
设置
-r
可读
-x
可执行
对字符串的测试还有:
!=
两个字符串不相同
-z
空串
对数值的测试有:
-eq
数值相等
(=)
-ne
数值不相等
(!=)
-gt
前者大于后者
(>)
-lt
前者小于后者
(<)
-le
前者小于等于后者
(
≤
)
-ge
前者大于等于后者
(
≥
)