BashIf-Then-Elseの例

Bash If Then Else Example



このレッスンでは、作成するBash環境スクリプトでIf-Then-Elseステートメントを使用する方法を説明します。 If-Then-Elseステートメントは、いくつかの条件が満たされたときにスクリプトのアクションのパスを定義する方法を提供するための便利なツールです。 If-Then-Elseステートメントの構文を見てみましょう。

もしもいくつかのコマンド;
それからその後-コマンド;
そうしないとその他-コマンド;
なれ

上記のコマンドで、SOME-COMMANDSがtrueであるか、その戻りステータスが0であることが判明した場合、THEN-COMMANDSが実行されます。そうでない場合は、ELSE-COMMANDSが実行されます。 SOME-COMMANDSでは、通常、整数の形式で文字列比較または値比較を行います。また、ファイルを含む多くの操作を行うことができます。主にファイルベースの条件で作業するときに使用されるいくつかのプライマリコマンドの例を見てみましょう。







主要な 意味
[ -に ] FILEが存在する場合はtrueを返します。
[-NS] FILEが存在し、ブロック特殊ファイルの場合はtrueを返します。
[-NS] FILEが存在し、文字特殊ファイルの場合はtrueを返します。
[ -NS ] FILEが存在し、ディレクトリである場合はtrueを返します。
[ -と ] FILEが存在する場合はtrueを返します。
[ -NS ] FILEが存在し、通常のファイルである場合はtrueを返します。
[ -NS ] FILEが存在し、そのSGIDビットが設定されている場合にtrueを返します。
[ -NS ] FILEが存在し、シンボリックリンクである場合にtrueを返します。
[-k] FILEが存在し、そのスティッキービットが設定されている場合にtrueを返します。
[ -NS ] FILEが存在し、名前付きパイプ(FIFO)の場合、trueを返します。
[ -NS ] FILEが存在し、読み取り可能である場合にtrueを返します。
[ -NS ] FILEが存在し、サイズがゼロより大きい場合にtrueを返します。
[ -NS ] ファイル記述子FDが開いていて、端末を参照している場合はtrueを返します。
[-u] FILEが存在し、そのSUID(ユーザーIDの設定)ビットが設定されている場合にtrueを返します。
[ -の ] FILEが存在し、書き込み可能である場合にtrueを返します。
[-NS] FILEが存在し、実行可能である場合にtrueを返します。
[-O] FILEが存在し、有効なユーザーIDによって所有されている場合にtrueを返します。
[ -NS ] FILEが存在し、有効なグループIDによって所有されている場合にtrueを返します。
[ -NS ] FILEが存在し、シンボリックリンクである場合にtrueを返します。
[ -NS ] FILEが存在し、最後に読み取られてから変更されている場合はtrueを返します。
[ -NS ] FILEが存在し、ソケットである場合にtrueを返します。

THEN-COMMANDSおよびELSE-COMMANDSは、任意の有効なUNIX操作または任意の実行可能プログラムにすることができます。注意してください それからなれ コマンドは、スクリプトの完全に別個の要素と見なされるため、セミコロンで区切られます。



If-Then-Elseの簡単な例

If-Then-Elseステートメントを使用した非常に単純な例からレッスンを始めましょう。
サンプルプログラムは次のとおりです。



例の場合

例の場合





スクリプトを実行したときに表示される出力は次のとおりです。

$。 ifelse1.sh
値は同じです
$

コマンドライン引数の使用

スクリプトでコマンドライン引数を使用し、引数の数と値自体を定義するIFステートメントの条件として使用することもできます。まず、次の内容のテキストファイルを定義します。



私の名前はLinuxHintです。私はサーバー、特にUbuntuサーバーが大好きです。彼らはそうです
終末期

これで、テキストファイルに単語が含まれているかどうかを検出するスクリプトを作成できます。ここでスクリプトを定義しましょう。

捨てた 「$ 2で$ 1を見つける」
グリップ $ 1 $ 2
もしも [ $? -生まれ 0 ]
それから
捨てた 「$ 1がファイル$ 2に見つかりません。」
そうしないと
捨てた 「ファイル$ 2で$ 1が見つかりました。」
なれ
捨てた 「スクリプトが完了しました。」

このスクリプトは非常に動的です。コマンドライン自体から検索する単語と検索するファイルを考慮します。これで、スクリプトを実行する準備が整いました。

。 ifelse2.sh love hello.txt

次のような出力が表示されます。

愛を見つけるhello.txt
愛が見つかりました ファイルhello.txt。
スクリプトが完了しました。

コマンドライン引数の数を確認しています

IFステートメント内で、コマンドに渡されたコマンドライン引数の数を確認して、同じ操作を実行できるようにすることもできます。

カウント=$#
もしも [ $ count -gt 1 ]
それから
捨てた 「十分な議論がない」
そうしないと
捨てた 'よくできた!'
なれ

このスクリプトを実行してみましょう。次の出力が表示されます。

コマンドライン引数

コマンドライン引数

If-Then-Elif-Elseステートメント

同じブロックに複数のIFステートメントを含めて、定義したコマンドを実行するためにプログラムがたどる決定パスを絞り込むこともできます。スクリプトで複数のIFステートメントを定義するための構文は次のとおりです。

もしもテストコマンド;
それから
結果-コマンド;
エリフ
別の-コマンド;
それから
別の結果コマンド;
そうしないと
代替コマンド;
なれ

これは非常によく知られているように見えますが、フォローアップも簡単です。ツリーがどのように機能するかを確立するための簡単な例を定義しましょう。

カウント=$#
もしも [ $ count -eq 1 ]
それから
捨てた 「引数が1つだけ見つかりました。」
エリフ [ $ count -eq 2 ]
それから
捨てた 「より良い、2つの引数が見つかりました。」
そうしないと
捨てた 「お疲れ様でした。多くの議論が見つかりました!」
なれ

このコマンドで返されるものは次のとおりです。

If Then ElifElseの例

If Then ElifElseの例

ケースステーメントの使用

IF-ELSEステートメントは、決定する必要のあるオプションのリストが大きい場合に役立ちます。ただし、結果と完全に一致する少数のケースでのみアクションを実行する場合は、BashスクリプトでもCASEステートメントを使用できます。その構文は次のようになります。

場合表現ケース1)。COMMANDS-TO-EXECUTE;
CASE2)。COMMANDS-TO-EXECUTE;
CASE2)。COMMANDS-TO-EXECUTE;
..。)。COMMANDS-TO-EXECUTE;
*)。COMMANDS-TO-EXECUTE;
esac

*が付いた最後のケースはデフォルトのケースとして機能し、上記で定義されたケースのいずれも一致しないことが判明した場合に実行されます。

CASEステートメントを使用して簡単な例を簡単に作成しましょう。

場合 '$ 1'
1)。
捨てた 「値は1です。」
;;
2)。
捨てた 「値は2です。」
;;
3)。
捨てた 「値は3です。」
;;
*)。
捨てた 「他の値が渡されました。」
esac

各CASEステートメントは;;で終了します。 (ダブルセミコロンマーク)。このコマンドで返されるものは次のとおりです。

ケースの例

ケースの例

結論

このレッスンでは、プログラムに存在する値、またはユーザーが定位置を使用して渡した値に基づいて特定のアクションを実行するために定義するBashスクリプトでIF-ELSE、IF-THEN-ELIF、およびCASEステートメントを使用する方法を確認しました。パラメーター。