変数へのBASHコマンド出力

Bash Command Output Variable



ユーザーの要件に基づいて、ターミナルからさまざまなタイプのbashコマンドを実行する必要があります。ユーザーが端末からコマンドを実行すると、エラーが存在しない場合は出力が表示され、存在しない場合はエラーメッセージが表示されます。コマンドの出力は、将来使用するために変数に格納する必要がある場合があります。この目的のために、bashのシェルコマンド置換機能を使用できます。このチュートリアルでは、この機能を使用してさまざまなタイプのシェルコマンドを変数に格納する方法を示します。

変数= $((指図)。
変数= $((指図 [オプション…]引数1引数2..。)。
変数= $((///指図)。

また







変数=指図
変数=指図 [オプション…]引数1引数2..。
変数=`///指図

***注:上記のコマンドを使用するときは、等号の前後にスペースを使用しないでください。



変数への単一コマンド出力

Bashコマンドは、これらの部分がオプションであるコマンドに対して、オプションと引数なしで使用できます。次の2つの例は、単純なコマンド置換の使用法を示しています。



例1:

bash ` 日付 ` コマンドは、現在の日付と時刻を表示するために使用されます。次のスクリプトは、 `の出力を保存します 日付 ` $へのコマンド 現在の日付 コマンド置換を使用して変数。





$現在の日付= $((日にち)。
$捨てた '今日は$ current_date'

出力:



例2:

`pwd` コマンドは、現在の作業ディレクトリのパスを表示します。次のスクリプトは、の出力を格納します `pwd` 変数へのコマンド、 $ current_dir この変数の値は、を使用して出力されます。 `エコー` 指図。

$current_dir=pwd
$捨てた '現在のディレクトリは次のとおりです。$ current_dir'

出力:

オプションと引数のあるコマンド

オプションと引数は、一部のbashコマンドでは必須です。次の例は、オプションと引数を指定してコマンドの出力を変数に格納する方法を示しています。

例3:

バッシュ ` トイレ コマンドは、任意のファイルの行、単語、および文字の総数をカウントするために使用されます。このコマンドは、オプションとして-c、-w、および-lを使用し、引数としてファイル名を使用して出力を生成します。名前の付いたテキストファイルを作成します Fruits.txt 次のスクリプトをテストするために、次のデータを使用します。
Fruits.txt

Fruits.txt
マンゴー
オレンジ
バナナ
葡萄
グアバ
アップル

次のコマンドを実行して、単語の総数をカウントして保存します。 Fruits.txt 変数にファイルし、 $ count_words `を使用して値を出力します echo` 指図。

$count_words=トイレ -のFruits.txt
$捨てた 'fruits.txtの総単語数は$ count_words'

出力:

例4:

`カット` オプションと引数を使用して出力を生成する別のbashコマンドです。名前の付いたテキストファイルを作成します weekday.txt 次のスクリプトを実行するための7週間の名前を使用します。

weekday.txt

月曜日
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日

名前の付いたbashファイルを作成します cmdsub1.sh 次のスクリプトを使用します。このスクリプトでは、 その間 ループはの内容を読み取るために使用されます weekday.txt 1行ずつファイルし、 `を使用して各行の最初の3文字を読み取ります カット ` 指図。カット後、文字列値は変数に格納されます $ day 。次に、ステートメントを使用しての値を確認する場合 $ day は ' 太陽' か否か。出力は「 日曜日は休日です ‘条件が真の場合、それ以外の場合は、 $ day

cmdsub1.sh

#!/ bin / bash
ファイル名='weekday.txt'
その間 読んだライン;NS
=捨てた $ line | 切る -NS 1-3
もしも [ $ day=='太陽' ]
それから
捨てた 「日曜日は休日です」
そうしないと
捨てた $ day
なれ
終わり<$ filename

スクリプトを実行します。

$weekday.txt
$bashcmdsub1.sh

出力:

ループでのコマンド置換の使用

コマンド置換の出力は、次の例に示す任意のループ変数に格納できます。

例5:

名前の付いたファイルを作成します cmdsub2.sh 次のコードで。ここで、 ` ls -d * / `コマンドは、現在のディレクトリからすべてのディレクトリリストを取得するために使用されます。ここでは、forループを使用して、出力から各ディレクトリを読み取り、変数に格納します。 $ dirname これは後で印刷されます。

cmdsub2.sh

#!/ bin / bash
にとって dirname $((ls -NS * /)。
NS
捨てた '$ dirname'
終わり

スクリプトを実行します。

$bashcmdsub2.sh

出力:

ネストされたコマンドの使用

パイプ(|)を使用して複数のコマンドを使用する方法は、前の例に示されています。ただし、ネストされたコマンドをコマンド置換で使用できます。この場合、最初のコマンドの出力は2番目のコマンドの出力に依存し、pipe(|)コマンドとは逆に機能します。

ネストされたコマンド構文:

どこ=command1 指図

例6:

2つのコマンド、 ` 捨てた `と` この例では、ネストされたコマンドとして `が使用されています。ここで、 ` `コマンドが最初に実行され、現在ログインしているユーザーのユーザー情報が出力されます。 `の出力 `コマンドは`によって実行されます 捨てた `コマンドと`の出力 捨てた `は変数に格納されます $ var 。ここで、 `の出力 捨てた `コマンドは`の出力に依存します `コマンド。

$どこ=捨てた
$捨てた $ var

出力:

コマンドパスの使用

コマンドのパスがわかっている場合は、コマンド置換を使用するときにコマンドパスを指定してコマンドを実行できます。次の例は、コマンドパスの使用法を示しています。

例7:

`whoami` コマンドは、現在ログインしているユーザーのユーザー名を表示します。デフォルトでは、このコマンドはに保存されます / usr / 午前/ フォルダ。次のスクリプトを実行して `を実行します whoami` パスを使用してコマンドを実行し、変数に格納します。 $ output、 の値を出力します $ output

$出力= $((/usr/午前/私は誰)。
$捨てた $ output

出力:

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

コマンド置換の引数として、コマンドとともにコマンドライン引数を使用できます。

例#8:

名前の付いたbashファイルを作成します cmdsub3.sh 次のスクリプトを使用します。 ` ベース名 `コマンドは、2からファイル名を取得するためにここで使用されますNSコマンドライン引数と変数に格納され、 $ filename 。私たちは1を知っていますNSコマンドライン引数は、実行中のスクリプトの名前であり、$ 0で示されます。

#!/ bin / bash
ファイル名=ベース名 $ 1
捨てた 'ファイルの名前は$ filename。 '

次の引数値を使用してスクリプトを実行します。

$bashcmdsub3.shデスクトップ/臨時雇用者/hello.txt

ここ、 ベース名 パスの、 デスクトップ/temp/hello.txt は ' hello.txt ’。だから、の値 $ filename になります hello.txt

出力:

結論:

このチュートリアルでは、コマンド置換のさまざまな使用法を示します。複数のコマンドまたは依存コマンドを操作し、後で他のタスクを実行するために結果を一時的に保存する必要がある場合は、スクリプトでこの機能を使用して出力を取得できます。

ビデオの詳細: