linux shellスクリプトフロー制御構文を3分で把握

1854 ワード

プロセス制御


この記事のオリジナルは公開番号:プログラミング3分[]()に発売されました.
今回のトピックはshellスクリプトのフロー制御であり、gif動図で見られる構文は以下の通りです.

if else

#!/bin/bash

if [ $1 == $2 ];then

   echo "a == b"

elif [ $1 -gt $2 ];then

   echo "a > b"

elif [ $1 -lt $2 ];then

   echo "a < b"

else

   echo "error"

fi

[]()

forサイクル

#!/bin/bash

for loop in 1 2 3 4 5

do

    echo "The value is: $loop"

done

[]()

whileサイクル

#!/bin/bash
i=0
while [[ $i<3 ]]
do
    echo $i
    let "i++"
done

しゅつりょく
whileの判断条件はキーボードから入力でき、インタラクティブなスクリプトになります
#!/bin/bash
echo 'press  exit'
while read num
do
    echo "you input is $num"
done

ps:untilサイクルはwhileサイクルとは逆に,untilは判断条件が真であるまで停止し,文法はwhileと全く同じであまり紹介されていない.
[]()

デッドサイクル

while true

do

    command

done

または
for (( ; ; ))
do
    command
done

デッドサイクル、Ctrl+Cで終了します.
[]()

ジャンプサイクル

continuebreakです

case

#!/bin/bash
case $1 in
    1) echo 'You have chosen 1'
    ;;
    2) echo 'You have chosen 2'
    ;;
    *) echo 'You did not enter a number between 1 and 2'
    ;;
esac

プログラミング言語のswitchと同様に、文法のみがわずかに異なり、esaccaseの終了符である.
各モードは、右かっこで)を終了し、一致しない場合は*)を使用し、各モードは;;の2つのセミコロンで連結されて終了する.
case   in

  1)

    command1

    command2

    ...

    commandN

    ;;

  2)

    command1

    command2

    ...

    commandN

    ;;

esac