文章目录




if

基本语法


if [ 条件判断式 ];then

程序

fi

或者

if [ 条件判断式 ]

then

程序

elif [ 条件判断式 ]

then

程序

else

程序

fi


注意事项:

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格

(2)if后要有空格

案例

#!/bin/bash

if [ $1 -eq "1" ]
then
echo "zzz"
elif [ $1 -eq "2" ]
then
echo "qqq"
fi

case

基本语法


case $变量名 in

“值1”)

如果变量的值等于值1,则执行程序1

;;

“值2”)

如果变量的值等于值2,则执行程序2

;;

…省略其他分支…

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac


注意事项:


  1. case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
  2. 双分号“;;”表示命令序列结束,相当于java中的break。
  3. 最后的“*)”表示默认模式,相当于java中的default。

案例

#!/bin/bash

case $1 in
1)
echo "111"
;;
2)
echo "222"
;;
*)
echo "no thing"
;;
esac

for

基本语法


for (( 初始值;循环控制条件;变量变化 ))

do

程序

done



for 变量 in 值1 值2 值3…

do

程序

done


案例

从1加到100

#!/bin/bash        
s=0
for ((i=0;i<=100;i++))
do
s=$[$s + $i]
done
echo $s

比较 ∗ 和 *和 ∗和@区别

∗ 和 *和 ∗和@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 2 … 2 … 2…n的形式输出所有参数。*

当它们被双引号“”包含时,“$”会将所有的参数作为一个整体,以“$1 2 … 2 … 2…n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “ 2 ” … ” 2”…” 2”…”n”的形式输出所有参数。

未使用双引号
#!/bin/bash

for i in $*
do
echo " *的输出为 $i"
done

for j in $@
do
echo " @的输出为 $j"
done
结果


*的输出为 11
*的输出为 22
*的输出为 33
@的输出为 11
@的输出为 22
@的输出为 33


使用双引号
#!/bin/bash

for i in "$*"
do
echo " *的输出为 $i"
done

for j in "$@"
do
echo " @的输出为 $j"
done

结果


*的输出为 11 22 33
@的输出为 11
@的输出为 22
@的输出为 33


while

基本语法


while [ 条件判断式 ]

do

程序

done


案例

1 加到100

#!/bin/bash

s=0
i=1

while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done

echo $s