Bash How to Execute a Command in a Variable?
On 11月 22, 2021 by adminBash スクリプトはさまざまな方法で作成でき、ほとんどの人は Bash スクリプト内の簡単なコマンドの実行に慣れています。 しかし、これらのコマンドは、Bash の変数内にカプセル化することもできます。 このプロセスはコマンド代替と呼ばれ、通常、コマンドの出力を変数に格納するために使用されます。これにより、明示的に何度もコマンドを実行する必要がなくなり、むしろ、いつでもそのコマンドの出力を得るために変数にアクセスすることができます。 この記事では、これをどのように行うかを説明します。
Note: 以下で示すすべてのシナリオは、Ubuntu 20.04 で実行されました。 しかし、これらは、Linux の他のフレーバーでもまったく同じように機能します。
Bashで変数内のコマンドを実行する方法:
Bash で変数内のコマンドを実行する方法を示すために、次のような 3 つの異なるシナリオを紹介します:
変数に保存された “echo” コマンドの実行:
このシナリオは、変数内に格納されている echo コマンドを実行するという最も単純なシナリオです。
Step #1: Bash スクリプトを作成する。
Bash スクリプトをホーム フォルダに作成する必要があります。そのためには、次の画像からわかるように、ファイル マネージャ アイコンをクリックする必要があります。 このメニューから [新規文書] オプションを選択し、サブカスケードメニューから [空の文書] オプションを選択します。 これで、ホームフォルダに新しい文書が作成されます。 ここで、この新しく作成されたドキュメントの名前を、好きな名前に変更し、その後に拡張子として.shを付けます。 この例では、CommandVar.sh と名付けました。
このファイルに Bash スクリプトを記述するには、ファイルをダブルクリックして開き、Bash ファイルに以下の画像に示すようなスクリプトを入力します。 ここで、スクリプトの最初の行すなわち “#!/bin/bash “は、このファイルが実際にBashファイルであることを示す。 そして、「test」という名前の変数を作成し、「$(echo “Hi there!”)」という値を代入しています。 コマンドを変数に格納したいときは、そのコマンドの前に「$」という記号を入力しなければならない。 この場合、「echo」コマンドを「test」変数に格納したいので、「echo」コマンドの後にランダムなメッセージを入力し、それを丸括弧で囲んで、その前に「$」記号を置いただけである。 つまり、この「echo」コマンドを実行するには、「test」変数にアクセスしなければならない。 そこで、変数testに格納されているechoコマンドが正常に実行できるかどうかを確認するために、別のechoコマンドを使って変数testの出力を端末に出力しています。
ステップ2:ターミナルによるBashスクリプトの実行:
ここで、ターミナルを使ってこのスクリプトを実行する必要があります。 Ubuntu 20.04でターミナルを開き、次のコマンドを入力します。
Enterキーを押してこのコマンドを実行すると、ターミナルに次の出力が表示されるはずです。 ここで、ハイライトされている部分は、変数「test」に格納されていた「echo」コマンドの出力です。
変数に格納された「seq」コマンドの実行:
このシナリオでは、変数に格納されている「seq」コマンドを用いて一連の数字を表示させます。
Step # 1: 上記で作成したBashスクリプトの変更:
上記の方法で作成したBashファイルを開き、以下のスクリプトを入力します。 ここでは、”sequence “という変数を作成しています。 目的は、seqコマンドを使いながら1から10までの数字を表示することです。 そのために、”sequence “変数に”$(seq 1 10) “という値を代入している。 この他にも、好きな数字の範囲を指定することができます。 seq」コマンドの後の最初の数字はシーケンスの下限を示し、2番目の数字は上限を示す。 このスクリプトを入力したら、ファイルを保存して閉じてください。
ステップ2:変更したBashスクリプトをターミナルで実行する:
次に、上記と同じ方法でBashスクリプトを実行すると、以下の画像のようにターミナル上に指定した配列が表示されるようになります。
変数に格納した「pwd」コマンドの実行:
変数に格納した「pwd」コマンドを使用して、作業ディレクトリを表示することも可能です。
Step # 1: 上記で作成したBashスクリプトの修正:
修正したBashファイルを開き、その中に次の画像に示すようなスクリプトを入力します。 このスクリプトでは、「working_directory」という変数を作成し、「$(pwd)」という値を代入しています。 pwd」コマンドは、その出力、すなわち現在の作業ディレクトリを「working_directory」変数に格納するだけである。 pwd」コマンドが正しく実行されたかどうかを確認するために、「echo」コマンドを使って「working_directory」変数の値を端末に表示させています。
手順その2:変更したBashスクリプトをターミナルで実行する:
次に、上記と全く同じ方法で、このBashスクリプトを実行します。 このBashスクリプトの出力には、現在の作業ディレクトリが表示されます。 出力の強調表示されている部分は、実際には “pwd” コマンドの出力です。
Conclusion:
この記事は、Bash で変数内に格納されたコマンドを実行して、そのコマンドが独立して実行した場合に得られるものと同じ出力を得られる方法を非常にうまく説明しています。
コメントを残す