脚本编写习惯
- 脚本的功能;
- 脚本的版本信息;
- 脚本的作者与联系方式;
- 脚本的版权声明方式;
- 脚本的History;
- 脚本内较特殊的命令,使用【绝对路径】的方式来执行;
- 脚本运行时需要的环境变量预先声明与设置;
数值计算
var = ((运算内容))
脚本的执行方式
使用判断式
- test
- []
注意使用中括号的两端需要有空格符来分隔;
- 在中括号[]内的每个组件都最好使用空格来分隔;
- 在中括号内的变量,使用双引号括起来;
- 在中括号内的常数,使用单引号或双引号括起来;
shell脚本的默认变量
$
num
num为>=0的数字$#
表示参数的个数;$@
代表【”$1″”$2″”$3″…】每个变量是独立的$*
代表【”$1c$2c$3c….”】,其中的c为分隔符,默认为空格。
创建一个shell脚本。
echo $0
echo $1
echo $#
echo $@
echo $*
运行该脚本。
[root@izbp1fuxe9jel25ki8odhwz /Ethan]# ./test.sh a b c d
./test.sh
a
4
a b c d
a b c d
参数变量的偏移:shift
shift后可以接数字,代表拿掉最前面的几个参数的意思。
脚本程序如下。
echo $*
shift
echo $*
shift 2
echo $*
运行结果如下。
[root@izbp1fuxe9jel25ki8odhwz /Ethan]# ./test.sh 1 2 3 4 5
1 2 3 4 5
2 3 4 5
4 5
条件判断
if [ 条件判断式 ];then
fi
if [ 条件判断式 ];then
#内部代码段
elif
#内部代码段
else
#内部代码段
fi
条件选择
case $VarName in
"匹配字段1")
#内部代码段
;;
"匹配字段2")
#内部代码段
;;
*)
#内部代码段
;;
...
esac
函数
函数命名方法。
function funName(){
#内部代码段
}
函数调用方法
funName 1 2 3 4
函数也有内置变量,内置变量形式与shell脚本内置变量一样。
测试脚本如下。
function fun(){
echo $0
echo $1
echo $*
}
fun 1 2 3 a
运行结果如下。
[root@izbp1fuxe9jel25ki8odhwz /Ethan]# ./test.sh
./test.sh
1
1 2 3 a
循环
while [ 判断式 ]
do
#内部代码段
done
until [ 判断式 ]
do
#内部代码段
done
for i in var1 var2 var3 ...
do
#内部代码段
done
for ((初始值;限制值;赋值运算))
do
#内部代码段
done