次のスクリプトがあります。
#!/bin/bash
. config
./sub-script
構成には多くの変数があります./subscript arg1 arg2 ... arg100500
。source
下付き文字で設定を使用できるようにする他の方法はありますか?
答え1
このようにスクリプトを設定できる場合
#!/bin/bash
. config
. /path/to/sub-script
初期化されたすべての変数は、config
基本スクリプトとその変数が開始されたすべてのスクリプトで使用できる必要があります。
説明する
スクリプトは新しい非対話型シェルプロセスを開始し、親スクリプトで初期化されたシェル変数を使用できないようです。ただし、エクスポートされた環境変数は新しいサブプロセスで使用できる必要があります。
答え2
export
変数を作成できます。
VAR=foo
export VAR
または:
export VAR=foo
ただし、これらの変数は、すべての子プロセスの環境で見ることができます。
答え3
構成ファイルの絶対パス名を下付き文字に渡すことができます。たとえば、
#!/bin/bash
. ./config
./sub-script ./config
その後、下付き文字は次のことを行うことができます。
cfg="$1"
shift
. "$cfg"
空の$cfg
場合は、デフォルト値を指定することもできます。$1
cfg=${1:-/path/to/default/config}