ウェブサイト検索

bashコマンド展開


bashのコマンドを使って作業していると、特定のコマンドの出力を特定の変数の値として使用しなければならないポイントに達します。コマンド展開は、特定のコマンドの出力がコマンドの代わりに使用されるコマンド置換を指す用語です。理想的には、コマンドが実行され、その値がコマンドに置き換えられ、多くの場合、変数を扱う際に使用されます。

Bashのコマンド展開は、コマンドが最初に実行されない限り、値がまだ分からない特定の変数を使用する必要があるときに便利です。このガイドでは、bashのコマンド置換を使う方法を理解するのに役立つさまざまな例を紹介します。

Bashコマンド拡張の使い方

コマンド展開は二つの方法で使用できます。

以下の構文のように囲むことができます:

$(command)

代わりに、以下に示すようにバックティックを使用することもできます。

`command`

スクリプトでbash置換を使用すると、コマンドの出力が実行時にコマンドを置き換えます。

例えば、スクリプトを実行する際に現在の日付と時刻およびアップタイムを表示するコマンドを書く必要がある場合、以下のようなスクリプトを書くことができます。

seq 1 2 10

ループにおけるBashコマンドの展開

特定のタスクを実行するスクリプトがある場合ですが、その変数の値がコマンドの出力に依存する場合、bash展開を使用できます。たとえば、IPアドレスの名前が含まれるファイルがあるとしたら、そのファイルの名前に基づいて特定のタスクを実行するためにforループを実行することができます。

以下のスクリプトは、cat コマンドを使用してファイルを開き、そのファイルの内容を現在のシェルに出力します。

コマンド展開とパラメータ展開

Bashコマンド展開は、パラメータ展開とほぼ同じです。bash置換では、 $(); を使用し、パラメータ展開では $ {}. を使用します。パラメータ展開は、コマンド展開から変数を保護します。理解するための例を見てみましょう。

しかし、コマンド置換の例では、現在の日付と時刻を表示するコマンドdateが置き換えられ、その出力がコマンドの代わりに使用されることがわかります。

ですので、変数をコマンド展開のケースとして扱いたくない場合は、${} の代わりに $() を使用してください。

結論

Bashのコマンド展開はコマンド置換と同じです。このガイドではコマンド展開の意味を説明し、bashスクリプトでコマンド展開をどのように使用できるかを理解するためのさまざまな例を示しています。重要なポイントは、コマンド置換とは、変数の値を取得または設定する際にコマンド自体の代わりにコマンドの出力が使用されることです。