web-dev-qa-db-ja.com

どのように私はabc.shを実行するときにターミナルを介してスクリプトで変数を渡すことができますか

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

例:sh abc.sh export id=3

7
Vinod

エクスポートされた変数と同じコマンドラインで設定された変数は、プログラムから見ることができます。

$ 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を使用して、固定されたものを最初から削除した後です。名前付き引数の場合、getoptman page )、またはgetopts[〜#〜] posix [〜#〜]を使用する方がおそらく良いでしょう。bash-hackers.orgのチュートリアル )。

いずれの場合でも、堅牢なスクリプトは、一部の変数が欠落している(設定されていない)場合に対処する必要があります。

10
ilkkachu

この方法でこれを行うことができます(この実行の場合のみ):

id=3 sh abc.sh 
6
Romeo Ninov

実行前に宣言(またはここでは必要ありません)を宣言します。

id=3 ./myScript.sh

myScript.sh:

#!/bin/bash

echo "id = $id"

出力:

id = 3
4
ChristophS