別のファイルから別の変数の変数を割り当てる方法

別のファイルから別の変数の変数を割り当てる方法

たとえば、次の変数を含むファイルがあります。

文書

DEVICE0_USB="usbSerialNo1"
DEVICE1_USB="usbSerialNo2"

この変数の内容をスクリプトの変数に割り当てたいと思います。たとえば、次のようになります。

スクリプト

FAX_MACHINE_USB=$DEVICE0_USB
COFFEE_MAKER_USB=$DEVICE1_USB

だから私がecho $FAX_MACHINE_USB受け取ったときusbSerialNo1

source以下を使用して変数を取得できます。文書しかし、これはまたすべての行を実行します文書。私の場合、これは問題ではありません。なぜなら文書変数宣言だけがありますが、まだそうしたくありません。これを達成する他の方法はありますか?

ベストアンサー1

同様の質問に答えるようですここ

もちろん、必要に応じて変数を使用または.割り当てることができますが、ファイル内の特定の行のみを使用または実行するsourceこともできます。awkgrepバラより可変減速と同じです。

さまざまな変数に対処する方法

にすべての変数を割り当てるには、script1.sh次の点を考慮してください。

source <(grep -E '^\w+=' script1.sh)

これは、変数の割り当てのように見えるすべての行をgrep抽出するために使用されます。script1.shその後、この行は現在のシェルで実行され、変数が割り当てられます。

この方法を使用する場合は、まずすべての変数が必要か、実行中の操作を妨げる変数がないことを確認してください。そのような場合は、 grep2番目のコマンドを使用して除外できます。

各部分を順番に考えてください。

  • source filefile現在のシェルで実行するようにシェルに指示します。

  • <(...)プロセス置換と呼ばれます。これにより、ファイル名の代わりにコマンドの出力を使用できます。

  • このコマンドは、grep -E '^\w+=' script1.sh変数の割り当てのように見えるすべての行を抽出します。コマンドラインでこのコマンドを単独で実行すると、次のような内容が表示されます。

    variable="Hello"
    var2="Value2"
    

    など。まず、これを実行して出力を確認して、実行したい行が正しいことを確認する必要があります。

おすすめ記事