条件测试
test或者[ ] 判断一个条件是否成立。
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
EX:
VAR=100
#[ “$VAR” -eq 100 ]#变量取值都放在双引号中
test $VAR -eq 100
echo $?
if/then/elif/else/fi语句
#! bin/sh
if [ -f /bin/sh ];then #这里的;是为了隔断两个命令
echo “-----------”
elif [ -p /bin/sh ];then
echo “-----------”
else
echo “-----------”
fi
case语句
C语言的switch-case只能匹配int型和char型常量表达式
但是。。。
shell里case可以匹配字符串和通配符
#! bin/sh
read YES_OR_NO
case “$YES_OR_NO” in
yes|y|Yes|YES)
echo “dasdasdsad” ;; #;;相当于是break
[nN]*) #[nN] 是通配符,,用来匹配
echo “sadasdadsa” ;;
*)
echo “dasdasdadas”
return 1 ;;
esac
retrun 0
循环for while
for/do/done
相当于是foreach
#! bin/sh
for MYFILE in KaTeX parse error: Expected 'EOF', got '#' at position 20: … ;do #̲(ls)等价于‘ls’ 显示…MYFILE" ];then
echo “dasdasdada”
elif [ -f “$MYFILE” ];then
echo “sdasdadsaa”
else
echo “sdasdadad”
fi
done
while/do/done
#! bin/sh
count=3 #三次机会
echo “enter password:”
read TRY
while [ "
T
R
Y
"
!
=
"
s
e
c
r
e
t
"
−
a
c
o
u
n
t
−
g
t
0
]
;
d
o
e
c
h
o
"
s
o
r
r
y
,
t
r
y
a
g
a
i
n
"
c
o
u
n
t
=
TRY" != "secret" -a count -gt 0 ];do echo "sorry ,try again" count=
TRY"!="secret"−acount−gt0];doecho"sorry,tryagain"count=[count-1] #[ ]这里是算术运算符
read TRY
done
echo “sdasdadsadasdaa”
break[n] 可以指定跳出几层循环
continue 跳过本次循环,但不会跳出循环