abc.sh実行時に端末を介してスクリプトの変数を渡す方法

abc.sh実行時に端末を介してスクリプトの変数を渡す方法

実行中にスクリプトに変数を渡したいです。

前任者:sh abc.sh export id=3

答え1

エクスポートされた変数と同じコマンドラインで設定された変数はプログラムに表示されます。

$ cat foo.sh
#!/bin/sh
echo "$foo"

$ foo=bar ./foo.sh
bar

$ export foo=bar
$ ./foo.sh
bar

ただし、より一般的なイディオムは、位置引数などに設定されたコマンドライン引数を使用することです$1$2

$ cat arg.sh
#!/bin/sh
echo "$1 and $2"

$ ./arg.sh alpha beta
alpha and beta

または、最初からいくつかの固定引数を削除するためにを"$@"使用した後、すべてのコマンドライン引数を取得するために使用します。shift名前付きパラメータの場合getoptマニュアルページ)、またはgetoptsPOSIXbash-hackers.orgのチュートリアル)。

それにもかかわらず、強力なスクリプトは、一部の変数が欠落している(設定されていない)状況を処理する必要があります。

答え2

次の方法でこれを実行できます(この実行のみ)。

id=3 sh abc.sh 

答え3

実行する前に宣言(またはエクスポート、ここでは不要):

id=3 ./myScript.sh

myScript.sh:

#!/bin/bash

echo "id = $id"

出力:

id = 3

関連情報