Bashおよびシェルスクリプトを使用する場合、条件を使用する必要がある場合があります スクリプトで。
プログラミングでは、条件は非常に重要です。条件は、いくつかの条件かどうかを表明するために使用されます。 本当かどうか。
このチュートリアルでは、Bash言語の条件ステートメントの1つである Bashifelseステートメントに焦点を当てます。
このステートメントを使用して、スクリプトを条件付きで実行する方法を見ていきます。
また、ネストされた他の場合はBashを使用する方法についても学習します。 より複雑なコードを作成するためのステートメント。
BashIfElseステートメント
Bashの「ifelse」ステートメントを実行するには、4つの異なるキーワードを使用する必要があります:if、then、else、fi:
- 場合 :チェックしたい状態を表します;
- 次に :前の条件が真の場合、特定のコマンドを実行します;
- その他 :前の条件がfalseの場合は、別のコマンドを実行します;
- fi :「if、then、else」ステートメントを閉じます。
「ifelse」ステートメントを使用する場合は、条件を1つまたは2つの角かっこで囲む必要があります。
if [[ condition ]]
then
<execute command>
else
<execute another command>
fi
「ELSE」ステートメントはオプションであることに注意してください 、省略した場合、条件がfalseと評価されても何も実行されません。
注 :条件を角かっこで区切ってスペースを入れる必要があります。そうしないと、構文エラーが発生する可能性があります。
他の例の場合
これで、Bashの「ifelse」について詳しく知ることができました。 ステートメント、実際の例でどのように使用できるか見てみましょう。
このセクションでは、rootユーザーがメッセージを実行した場合にメッセージを出力するスクリプトを作成します。
スクリプトがrootユーザーによって実行されない場合、スクリプトは別のカスタムメッセージを書き込みます。
スクリプトがrootによって実行されているかどうかを確認するには、呼び出し元のUIDがゼロかどうかを確認する必要があります。
#!/bin/bash
# If the user is root, its UID is zero.
if [ $UID -eq 0 ]
then
echo "You are root!"
else
echo "You are not root."
fi
先に述べたように、「 else 」ステートメントは必須ではありません。
以前に作成したスクリプトで省略した場合でも、最初の「then」ステートメントを実行できます。
#!/bin/bash
# If the user is root, its UID is zero.
if [ $UID -eq 0 ]
then
echo "You are root!"
fi
では、スクリプトに「if」ステートメントを追加したい場合はどうすればよいですか?
BashIfElifステートメント
「エリフの場合 」ステートメントは、スクリプトに「if」ステートメントを追加するためにBashで使用されます。
Bashの「ifelif」ステートメントを実行するには、5つの異なるキーワードを使用する必要があります:if、then、elif、else、fi:
- 場合 :チェックしたい状態を表します;
- 次に :前の条件が真の場合、特定のコマンドを実行します;
- elif :ステートメントに条件を追加するために使用されます;
- その他 :前の条件がfalseの場合は、別のコマンドを実行します;
- fi :「if、elif、then」ステートメントを閉じます。
if [[ condition ]]
then
<execute command>
elif [[ condition ]]
then
<execute another command>
else
<execute default command>
fi
繰り返しになりますが、「ELSE」ステートメントはオプションであるため、デフォルトのステートメントが必要ない場合は省略できます。
if [[ condition ]]
then
<execute command>
elif [[ condition ]]
then
<execute another command>
fi
Elifの例の場合
前のセクションでは、「 if else 」ステートメントを使用して、ユーザーがrootであるかどうかを確認します。
このセクションでは、ユーザーがrootであるかどうか、またはユーザーのUIDが1002であるかどうかを確認します。
そうでない場合は、スクリプトを終了して、プロンプトをユーザーに返します。
if [[ $UID -eq 0 ]]
then
echo "You are root!"
elif [[ $UID -eq 1002 ]]
then
echo "You are user, welcome!"
else
echo "You are not welcome here."
exit 1;
fi
おめでとうございます。これで、「 if elif」の使用方法がわかりました。 」ステートメント!
同じ「if」ステートメントで複数の条件を設定したい場合はどうすればよいでしょうか。
IfElseの複数の条件
同じ「ifelse」ステートメントに複数の条件を記述するには、条件を「AND」演算子または「OR」演算子で区切る必要があります。
# AND operator used in if else.
if [[ <condition_1> && <condition_2> ]];
then
<execute command>
fi
# OR operator used in if else.
if [[ <condition_1> || <condition_2> ]];
then
<execute_command>
else
<execute_another_command>
fi
たとえば、rootユーザーであり、正しいパラメーターを指定したことを確認するスクリプトを作成する場合は、次のように記述します:
#!/bin/bash
# If the user is root and the first parameter provided is 0.
if [[ $UID -eq 0 && $1 -eq 0 ]];
then
echo "You provided the correct parameters"
else
echo "Wrong parameters, try again"
fi
ネストされたIfElseステートメント
場合によっては、予備的な条件下で条件をチェックするために、ネストされた条件を実装する必要があります。
「ifelse」ステートメントをネストするには、「if」ステートメントを別の「if」ステートメントに含め、ネストしたステートメントを閉じる前に閉じる必要があります。
if [[ condition ]]
then
if [[ other condition ]]
then
<execute command>
else
<execute another command>
fi
fi
注 :開くすべての「if」ステートメントに対して、必ず終了の「fi」ステートメントを用意してください。 1つの「fi」だけでは複数の「if」ステートメントには不十分です。
ネストされたステートメントの例
例として、提供された最初の引数がゼロであることを確認する前に、ユーザーがrootであることを確認するとします。
これを解決するには、ネストされた「if、then、else」ステートメントを次のように記述します:
#!/bin/bash
if [[ $UID -eq 0 ]]
then
if [[ $1 -eq 0 ]]
then
echo "You are allowed to execute this script."
else
echo "You should have provided 0 as the first argument."
fi
fi
Bashテスト
お気づきかもしれませんが、前のセクションでは、変数の値を数値と比較するために「-eq」演算子を使用しました。
単純な等式チェックを行いましたが、不等式チェックが必要な場合はどうでしょうか。
たとえば、値が特定の数値より大きいかどうかを確認したい場合はどうなりますか?
これを実行するには、Bashテストが必要です。 。
Bashテストは、値を一緒に比較するために条件ステートメントで使用できる一連の演算子です。
「helptest」コマンドを実行すると、Bashテストを一覧表示できます。
$ help test
Bashテストを作成する場合、基本的に3つのオプションがあります:
- ファイルとディレクトリの書き込み条件 :存在する場合、文字ファイル、デバイスファイルなどの場合;
- 数字に条件を書く :それらが互いに等しい場合、一方が他方よりも大きい場合;
- 文字列に条件を書き込む :文字列変数が設定されている場合、または2つの文字列が互いに等しい場合。
Bashファイルの条件
bashファイルの状態 ファイルが存在するかどうか、ファイルを読み取ったり、変更したり、実行したりできるかどうかを確認するために使用されます。
Bashファイルのテストについては、以下の表で説明しています:
オペレーター | 説明 |
-e | ファイルが存在するかどうかを確認します |
-d | ファイルがディレクトリかどうかを確認します |
-b | ファイルがブロックデバイスかどうかを確認します |
-c | ファイルがキャラクターデバイスかどうかを確認します |
f1 -nt f2 | ファイルf1がファイルf2よりも新しい場合 |
f1 -ot f2 | ファイルf1がファイルf2より古い場合 |
-r | ファイルを読み取ることができます(読み取り権限) |
-w | ファイルを変更できます(書き込み権限) |
-x | ファイルを実行できます(実行権限) |
たとえば、ファイルがディレクトリであるかどうかを確認するには、次のスクリプトを記述します
#!/bin/bash
# Checking the first argument provided
if [[ -d $1 ]]
then
echo "This is a directory"
else
echo "Not a directory"
fi
Bash番号の条件
bash番号条件は、2つの数値を比較するために使用されます。等しい場合、一方が他方よりも大きいか、または小さい場合。
最もよく使用されるBash番号条件の表を次に示します:
オペレーター | 説明 |
num1 -eq num2 | 数値が等しいかどうかを確認します |
num1 -ne num2 | 数値が等しくないかどうかを確認します |
num1 -lt num2 | num1がnum2よりも小さいかどうかを確認する |
num1 -le num2 | num2以下 |
num1 -gt num2 | num2より大きい |
num1 -ge num2 | num2以上 |
たとえば、数値がゼロに等しくないかどうかを確認するには、次のように記述します:
#!/bin/bash
# Checking the first argument provided
if [[ $1 -eq 0 ]]
then
echo "You provided zero as the first argument."
else
echo "You should provide zero."
fi
Bash文字列条件
bash文字列条件は、2つの文字列が等しいかどうか、または文字列が空かどうかを確認するために使用されます。
これが主なBash文字列条件の表です:
オペレーター | 説明 |
str1 = str2 | 文字列が等しいかどうかを確認します |
str1 != str2 | 文字列が異なるかどうかを確認します |
-z str1 | str1が空かどうかを確認します |
-n str1 | str1が空でないかどうかを確認します |
たとえば、ユーザーがスクリプトに値を提供したかどうかを確認するには、次のように記述します:
#!/bin/bash
# Checking the first argument provided
if [[ -n $1 ]]
then
echo "You provided a value"
else
echo "You should provide something"
fi
結論
今日のチュートリアルでは、Bashの「IfElse」ステートメントについて学びました。
例を挙げて、より複雑なステートメントを作成できることを確認しました。elifおよびネストされたステートメントを使用します。
最後に、Bashテストとは何か、スクリプトの条件をチェックするためにどのように使用されるかについて説明しました。
Linuxシステム管理に興味がある場合は、Webサイトに専用のセクションがありますので、ぜひチェックしてください!