実行中にスクリプトに変数を渡したいです。
前任者: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
(マニュアルページ)、またはgetopts
(POSIX、bash-hackers.orgのチュートリアル)。
それにもかかわらず、強力なスクリプトは、一部の変数が欠落している(設定されていない)状況を処理する必要があります。
答え2
次の方法でこれを実行できます(この実行のみ)。
id=3 sh abc.sh
答え3
実行する前に宣言(またはエクスポート、ここでは不要):
id=3 ./myScript.sh
myScript.sh:
#!/bin/bash
echo "id = $id"
出力:
id = 3