if语句
if语句与其他语言中的类似,不过不需要大括号,在表达式后面需要添加个关键字then
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
elif [ $a -gt $b ]
then
echo "a is greater than b"
elif [ $a -lt $b ]
then
echo "a is less than b"
else
echo "I am just a soso"
fi
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo 'The two numbers are equal!'
else
echo 'The two numbers are not equal!'
fi
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,之前的这三个运算符都可以
case...esac语句
case...esac语句,与其他语言中的switch...case语句类似,是一种多分支选择结构
case工作方式如下所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
echo 'Input a number between 1 to 4'
echo 'your number is:\c'
read aNum
case $aNum in
1)
echo 'you select 1'
;;
2)
echo 'you select 2'
;;
3)
echo 'you select 3'
;;
4)
echo 'you select 4'
;;
*)
echo 'you do no select a number between 1 to 4'
;;
esac
for循环
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
for str in 'This is a string'
do
echo $str
done
for FILE in $HOME/.bash*
do
echo $FILE
done
while循环
i=10
while [ $i -ne 0 ]
do
i=`expr $i - 1`
echo $i
done
while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量FILM,按<Ctrl-D>结束循环。
echo 'type <CTRL-D> to terminate'
echo -n 'enter your most liked film:'
while read FILM
do
echo "yeah!great film the $FILM"
done
until循环
a=0
until [ ! $a -lt 15 ]
do
echo $a
a=`expr $a + 1`
done
在shell中可以使用break和continue来跳出循环,与其他语言中用法类似,不同的一点是,break后面可以跟个数字,表示跳出第几层循环。
网友评论