Shell语法
变量#
$0
当前脚本的文件名,注意,$10
不能获取第十个参数,获取第十个参数需要${10}
。当n>=10时,需要使用${n}
来获取参数。$?
上个命令的退出状态,或函数的返回值。$$
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。$n
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1
,第二个参数是$2
。$#
传递给脚本或函数的参数个数。$*
以单个字符串显示所有向脚本传递的参数"$@"
传递给脚本或函数的所有参数,但使用是要加双引号
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
if#
IF高级特性:
双圆括号(( )):表示数学表达式
在判断命令中只允许在比较中进行简单的算术操作,而双圆括号提供更多的数学符号,而且在双圆括号里面的'>','<'号不需要转意。
双方括号:表示高级字符串处理函数
双方括号中判断命令使用标准的字符串比较,还可以使用匹配模式,从而定义与字符串相匹配的正则表达式。
双括号的作用:
在shell中,[ $a != 1 || $b = 2 ]是不允许出,要用[ a != 1 ] || [ b = 2 ],而双括号就可以解决这个问题的,[[ a != 1 || b = 2 ]]。又比如这个[ "a" -lt "a" -lt "a" -lt "a" -lt "b" ],也可以改成双括号的形式(("b" ],也可以改成双括号的形式(("a" -lt "a" -lt "a" -lt "a" -lt "b" ],也可以改成双括号的形式(("b" ],也可以改成双括号的形式(("a"a" -lt "a" -lt "a" -lt "a" -lt "b" ],也可以改成双括号的形式(("b" ],也可以改成双括号的形式(("a" -lt "a" -lt "a" -lt "a" -lt "b" ],也可以改成双括号的形式(("b" ],也可以改成双括号的形式(("a"
< "a"
< "b"))
[ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真
[ -z STRING ] 如果STRING的长度为零则返回为真,即空是真
[ STRING1 ] 如果字符串不为空则返回为真,与-n类似
[ STRING1 == STRING2 ] 如果两个字符串相同则返回为真
[ STRING1 != STRING2 ] 如果字符串不相同则返回为真
[ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面则返回为真。
[ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。
case#
#! /bin/sh -
name=`basename $0 .sh`
case $1 in
s|start)
echo "start..."
;;
stop)
echo "stop ..."
;;
reload)
echo "reload..."
;;
*)
echo "Usage: $name [start|stop|reload]"
exit 1
;;
esac
exit 0
注意:
1、 ) 相当于其他语言中的default。
2、 除了)模式,各个分支中;;是必须的,;;相当于其他语言中的break
3、 | 分割多个模式,相当于or