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で終了します.
[]()
ジャンプサイクル continue
とbreak
です
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
と同様に、文法のみがわずかに異なり、esac
はcase
の終了符である.
各モードは、右かっこで)
を終了し、一致しない場合は*)
を使用し、各モードは;;
の2つのセミコロンで連結されて終了する.case in
1)
command1
command2
...
commandN
;;
2)
command1
command2
...
commandN
;;
esac
#!/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で終了します.
[]()
ジャンプサイクル continue
とbreak
です
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
と同様に、文法のみがわずかに異なり、esac
はcase
の終了符である.
各モードは、右かっこで)
を終了し、一致しない場合は*)
を使用し、各モードは;;
の2つのセミコロンで連結されて終了する.case in
1)
command1
command2
...
commandN
;;
2)
command1
command2
...
commandN
;;
esac
#!/bin/bash
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
#!/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で終了します.
[]()
ジャンプサイクル continue
とbreak
です
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
と同様に、文法のみがわずかに異なり、esac
はcase
の終了符である.
各モードは、右かっこで)
を終了し、一致しない場合は*)
を使用し、各モードは;;
の2つのセミコロンで連結されて終了する.case in
1)
command1
command2
...
commandN
;;
2)
command1
command2
...
commandN
;;
esac
while true
do
command
done
for (( ; ; ))
do
command
done
continue
とbreak
です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
と同様に、文法のみがわずかに異なり、esac
はcase
の終了符である.
各モードは、右かっこで)
を終了し、一致しない場合は*)
を使用し、各モードは;;
の2つのセミコロンで連結されて終了する.case in
1)
command1
command2
...
commandN
;;
2)
command1
command2
...
commandN
;;
esac
#!/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
case in
1)
command1
command2
...
commandN
;;
2)
command1
command2
...
commandN
;;
esac