3、判断符号[] (跟test基本相同)
(1)[ XXXX ] (注意[ ]和脚本XXXX之间保留空格)
(2)和!=用于比较字符串;(, != 两边必须有空格)
(3)整数比较只能使用-eq,-gt, ge, lt, le这种形式(-eq: equal, -gt: greater than, -ge: greater than or equal to, -lt: less than, le: less than or equal to)
(4)[ ]中的逻辑与和逻辑或使用-a 和-o 表示(-a: and, -o: or)
(5)&&、||、<和> 操作符如果出现在[ ]结构中的话,会报错。
任务:根据用户输入执行不同操作。
1)编辑脚本 vim shell03.sh
#!/bin/bash
read -p "Do you want to save the file[y/n]? " choice
[ $choice == ‘y’ -o $choice == ‘Y’ ] && echo “you save the file.” && exit 0
[ $choice == ‘n’ -o $choice == ‘N’ ] && echo “you don’t save the file.” && exit 0
2)设置权限 chmod u+x shell03.sh
3)执行脚本 ./shell03.sh
4、shell script参数
(1)shell script默认参数
ls -l,其中-l就是shell脚本参数。
(2)如何使用用户自定义脚本的参数
/path/scriptname arg1 arg2 arg3 arg4 # 参数之间用空格隔开
$0 $1 $2 $3 $4
$n:n=0、1、2、3、……
$#:表示参数个数,就上面案例而言,其值为4
$@:表示"$1" “$2” “$3” “$4” 每个变量是独立的,用双引号括起来
$*:表示"$1 $2 $3 $4"
任务:要求脚本输入4个参数,如果参数不够,提示用户;如果输入了4个参数,显示4个参数的值。
1)编辑脚本:vim shell04.sh
#!/bin/bash
[ $# -lt 4 -o $# -gt 4 ] && echo "Four parameters are required! " && exit 1
echo "script name : $0’
echo “parameters: $1 $2 $3 $4”
echo “parameters: $@”
echo “parameters: $*”
2)设置权限:chmod u+x shell04.sh
3)运行脚本:./shell04.sh
(3)参数偏移 shift
shift可以造成参数变量号码偏移。
下面,通过案例来演示shift的用法。
1)编辑脚本:vim shell05.sh
#!/bin/bash
echo “the number of parameters: $#”
echo “all the par ameters: p@”.
#shift one parameter
shift
echo “the number of parameters : $#”
echo “all the parameters: $@”
#shift three parameters
shift 3
echo “the number of parameters: $#”
echo “all the parameters: $@”
2)设置权限:chmod u+x shell05.sh
3)执行脚本:./shell05.sh mike howard alice green smith
思考题:
1)脚本参数有5个,执行shift 100,会不会报错?
不会报错,结果没有造成偏移效果。
2)shift的参数可不可以是负整数,表明向前偏移?
运行脚本会报错:
3) shift的参数可不可以是0
5、条件判断
(1)单分支结构
if [ 条件 ]; then
语句组
fi
(2)双分支结构
if [ 条件 ]; then
语句组1
else
语句组2
fi
例1、比较两个整数大小。
1)编辑脚本:vim if01.sh
read -p “a=” a
#!/bin/bash
read -p “a=” a
read -p “b=” b
if [ $a -ge
b
]
;
t
h
e
n
e
c
h
o
"
b ]; then echo "
b];thenecho"a <
b
"
e
l
s
e
e
c
h
o
"
b" else echo "
b"elseecho"a >= $b"
fi
2)设置权限:chmod u+x if01.sh
3)执行脚本:./if01.sh