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前者大于等于后者(≥)