コマンド出力を Bash の変数として保存するにはどうすればよいですか? PlatoBlockchain データ インテリジェンス。垂直検索。あい。

Bash でコマンド出力を変数として保存する方法は?

概要

bash スクリプトでは、コマンドの出力を変数に割り当てると、コマンドの出力を保存して後で使用できるので便利です。

この短いガイドでは、コマンドの出力を変数として Bash に保存する方法を見ていきます。

変数を設定するための基本

コマンドの出力を変数として保存するには、 コマンド置換. コマンド置換は、コマンドを実行するラッパーです。 サブシェル環境ラップされたコマンドを、コマンドが実行された環境の標準出力に置き換えます。 この出力は、参照変数に接続されている場合、後で参照できます。

コマンドの置換は、バッククォートまたは括弧付きのドル記号によって実現できます。

`command`

$(command)

かどうかについて議論がある. `コマンド` (バッククォート) または $(コマンド) (ドル記号と括弧) を「ベスト プラクティス」として使用する必要があります。 $(command) 入れ子でうまく機能し、場合によっては読みやすさが向上しますが、前の例ではどちらの構文でも使用できます。

つまり、コマンドの出力を Bash の変数に割り当てるのは次のように簡単です。

VARIABLE=$(command)
echo "${VARIABLE}"

Running: ${variable} として知られています パラメータ拡張、参照変数に関連付けられた値を評価して取得するために使用されます。

出力色を変更するコマンドの変数を設定する簡単な例を見てみましょう。

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

スニペットでは、 tput コマンドを実行し、これらのコマンドの戻り値を割り当てて、カラフルなテキストを出力します。 の setaf 前景色を変更し、3 (緑) と 9 (オレンジ) はカラー コードです。

次に、さまざまなコマンドの変数を設定するための複数の条件を含む別の例に進みます。

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

上記のスクリプトでは、 whoami コマンドは、現在のユーザーのユーザー名を返します。 の uname -a システム情報を返し、 date 現在の時刻と日付を返します。

注: ネストされた単一の呼び出しに複数のコマンドを追加することで、変数の代入を連鎖させることができます。 の CREATE 変数には、 touch コマンドは、ファイルを作成し、ファイル名をコマンドの出力に設定します。 date +"%d%m%Y

ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!

最後に、 multiline バックスラッシュを追加することによるコマンド変数の割り当ての概念 () 間に ls command -l を使用してテキスト ファイルのみを表示するフラグ *.txt. バックスラッシュは、次の文字を解釈しないようにシェルに通知するエスケープ文字です。

echo コマンドに、 -e 特殊文字を使用するためのフラグ、つまり、 n (改行)、新しい行に出力を印刷します。

スクリプトを実行すると、次の結果が得られます。

$ ./variable.sh

まとめ

この短いガイドでは、Bash でコマンドの出力を変数に設定する方法について説明しました。 の構文の違いを調べました。 コマンド置換、読みやすさの改善に注目してください $(command) バックティックベースの置換。 次に、単純な代入と連鎖/ネストされた出力代入の両方の例をいくつか見てきました。

タイムスタンプ:

より多くの スタックアバス