実行時にスクリプトで変数を渡したい
例:sh abc.sh export id=3
エクスポートされた変数と同じコマンドラインで設定された変数は、プログラムから見ることができます。
$ 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
( man page )、またはgetopts
( [〜#〜] posix [〜#〜]を使用する方がおそらく良いでしょう。 、 bash-hackers.orgのチュートリアル )。
いずれの場合でも、堅牢なスクリプトは、一部の変数が欠落している(設定されていない)場合に対処する必要があります。
この方法でこれを行うことができます(この実行の場合のみ):
id=3 sh abc.sh
実行前に宣言(またはここでは必要ありません)を宣言します。
id=3 ./myScript.sh
myScript.sh:
#!/bin/bash
echo "id = $id"
出力:
id = 3