Linux中有大量的shell脚本,读懂shell脚本,对理解linux或其他软件,很有帮助。
但是shell的语法和java还是有很大差别的,需要了解一下他的语法。
1 $# $0 $1 ${2} 代表脚本的参数个数,脚本名,参数1, 参数2
2 if [ 1 -eq 1 ] ; then echo eq; fi
if [ -f t.sh ] ; then echo file exist; fi
if [ -f "t.sh" ] ; then echo "file exist"; fi
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值 一定要有引号,否则总是返回true
[ "$a" = "$b" ] :判断$a和$b是否相等
3、
case ... in
...) do something here ;;
esac
例如
case "${1}" in
--help | -h | --h* )
echo "${USAGE}" >&2
exit 0
;;
--version | -V )
echo "${VERSION}" >&2
exit 0
;;
*)
echo "nothing" >&2
esac
4
for a in A B CC ; do echo $a; done
for a in * ; do echo $a; done --打印当前目录
$ for a in /d/kankan/* ; do echo $a; done
/d/kankan/非常小特工之时间大盗_160998_457944.xv
/d/kankan/功夫熊猫3__片花:观影大搜查特辑_187183_1347943.xv
/d/kankan/经典战役风云录__2012-05-25解放上海_166148_372981.xv
[]条件语法
1、字符串判断
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
2、数字的判断
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
3、文件的判断
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
4、复杂逻辑判断
-a 与
-o 或
! 非
结尾
语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。
函数
function f(){ echo this$*; }
f 8 9