Bash サブシェル

Bash Sabusheru



場合によっては、バックグラウンドで 1 つ以上のコマンドまたはスクリプトを実行する必要があります。このタスクは、すべてのコマンドまたはスクリプトをスクリプト ファイルに書き込み、アンパサンド (&) を使用してファイルを実行するか、現在のシェルからサブシェルでコマンドまたはスクリプトを実行することで実行できます。サブシェルを使用して、$() またはバッククォート (`) で囲むことにより、複数のコマンドまたはスクリプトを実行できます。このチュートリアルでは、Bash サブシェルの使用方法を示します。

サブシェルのさまざまな例

サブシェルでスクリプトを実行するさまざまな方法が、チュートリアルのこの部分で示されています。

例 1: 一重引用符と二重引用符を使用してサブシェルを実行する

現在の日付と時刻を出力する次のスクリプトを使用して Bash ファイルを作成します。次に、サブシェル スクリプトを一重引用符と二重引用符で囲むことにより、$strVal 変数が出力されます。







#!/bin/bash

#サブシェルで「date」コマンドを出力します。

エコー '今日は 「日付」

#文字列変数を定義する

strVal = 「バッシュサブシェル」

#一重引用符を使用してサブシェル内の変数を出力します

エコー '一重引用符の出力:' '$(エコー $strVal)'

#二重引用符を使用してサブシェル内の変数を出力します

エコー 「二重引用符の出力:」 $(エコー $strVal)

スクリプトを実行すると、次の出力が表示されます。サブシェル スクリプトは、一重引用符で囲むと文字列として出力されます。サブシェル スクリプトは、二重引用符で囲まれると実行されます。





例 2: サブシェルを使用して特定の拡張子のすべてのファイルを検索する

ユーザーからの入力としてファイル拡張子を受け取る次のスクリプトを使用して Bash ファイルを作成します。次に、サブシェルで「ls」コマンドが実行され、その特定の拡張子のすべてのファイルが検索されます。





#!/bin/bash

エコー -n 「ファイル拡張子の名前を入力してください:」

#検索するファイル拡張子名を取得します

読む 内線

#入力値を確認する

もしも [ [ $ext == 「」 ; それから

#エラーメッセージを印刷する

エコー 「延長はありません。」

それ以外

エコー 「ファイル名に $ext 拡大:'

#指定された拡張子を持つすべてのファイル名を出力します

エコー $( echo `ls *.$ext` )

なれ

「txt」入力でスクリプトを実行すると、次の出力が表示されます。出力によると、現在の場所に 3 つのテキスト ファイルが存在します。



空の値を指定してスクリプトを実行すると、次の出力が表示されます。

例 3: サブシェルで算術式を実行する

次のスクリプトを使用して Bash ファイルを作成します。このファイルでは、メイン シェルとサブシェルで同じ名前の変数が使用されます。算術演算はメインシェルとサブシェルで定義されます。

#!/bin/bash

#親シェル変数を定義する

番号 = 10

#親シェルの変数に基づいて結果を出力します

( ( 結果 = $number + 5 ) )

エコー '合計 $number +5= $結果

#親シェルと同じ名前のサブシェル変数を作成します

( 番号 = 二十 ; ( ( 結果 = $number + 10 ) ) ; エコー '合計 $number +5= $結果 )

#親シェルの変数に基づいて結果を再度出力します

エコー '合計 $number +5= $結果

スクリプトを実行すると、次の出力が表示されます。最初と最後の出力は、メイン シェルの結果を示します。 2 番目の出力は、サブシェルの結果を示します。メイン シェルの変数は、サブシェルの変数によって変更されません。

例 4: サブシェルで複数のコマンドを実行する

次のスクリプトを含む Bash ファイルを作成します。このスクリプトは、「echo」コマンドの出力を「sed」コマンドに送信し、一致する文字列値を別の文字列に置き換えます。 「echo」コマンドの出力は「JavaScript」です。そこで、この値を「Java」と「JavaScript」と比較してみます。一致するものが見つかった場合、一致する文字列は「Type」文字列に置き換えられます。

#!/bin/bash

#文字列値を定義する

strVal = 「ジャバスクリプト」

#元の文字列値を出力する

エコー 「文字列値: $strVal

#サブシェルの値を出力する

エコー -n 'サブシェル値: '

エコー $(echo $strVal | sed 's|Java|JavaScript タイプ|')

スクリプトを実行すると、次の出力が表示されます。出力によると、「Java」文字列は「Type」文字列に置き換えられます。サブシェルの出力は「JavaScript TypeScript」です。


結論

メイン シェルに影響を与えることなく、サブシェルを使用して 1 つ以上のコマンドまたはスクリプトを実行できます。このチュートリアルでは、複数の例を使用してサブシェルを使用する目的を説明します。ファイルの検索、数値の合計の計算、文字列の置換など、さまざまな種類のタスクが、指定された例のサブシェルによって実行されます。サブシェルの使用の概念が適切に説明されており、新しい Bash ユーザーはこのチュートリアルを読んだ後にサブシェルを使用できるようになります。