1、 位置参数
由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。
2、 内部参数
上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
3、算术比较运算符:eq ; 字符串比较运算符: =, 字符串对比最好用双引号括起变量。单引号禁用变量(和历史)扩展
4、if [ condition ] then: []前后的空格必须注意不能省略。condition可以是 -d -f -x等的测试条件,也可以是字符串和数值的逻辑值。
5、循环:
a、for x in a b c d e (for x in /etc/r*)
do
echo char $x
done
b、while [ condition ]
do
statements
done
c、until [ condition ]
do
statements
done
由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。
2、 内部参数
上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
3、算术比较运算符:eq ; 字符串比较运算符: =, 字符串对比最好用双引号括起变量。单引号禁用变量(和历史)扩展
4、if [ condition ] then: []前后的空格必须注意不能省略。condition可以是 -d -f -x等的测试条件,也可以是字符串和数值的逻辑值。
5、循环:
a、for x in a b c d e (for x in /etc/r*)
do
echo char $x
done
b、while [ condition ]
do
statements
done
c、until [ condition ]
do
statements
done
6、 "$((" 和 "))" 括起,bash 就可以计算表达式
7、 case结构(x表示变量名,可以是内置变量名1,2,3等)
case "${x##*.}" in
gz)
gzunpack ${SROOT}/${x}
;;
bz2)
bz2unpack ${SROOT}/${x}
;;
*)
echo "Archive format not recognized."
exit
;;
esac
"${x##.*}" 表示除去文件中最后句点后文本之外的所有文本。所以该算式表示取文件的后缀名。
8、经常犯的一个错误:初始化变量。
datei=20100622
引用该变量时用$datei,这个大多数人都没问题,我就是特别容易写成set datei=20100622或有多余的的空格。
本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/337587