1

Apache 起動スクリプトを実行しようとしています/etc/init.d/httpd。次のような環境変数定義はエラーになります。

CONF_FILE=$(APACHE_HOME)/conf/httpd.conf  

それは言う"/etc/init.d/httpd: line 15: APACHE_HOME: command not found"

そこで、かっこを中かっこに置き換えたところ、スクリプトは問題なく動作しました。何を与える?修正方法ではなく、なぜ間違っているのかを理解したいので、私は本当にこの質問をしています。シバンはそこにあり、元のシェルスクリプトから変更されていないのに、なぜ誤解しているのでしょうか?

4

3 に答える 3

2

UNIXシステムの場合:

$SOMETHING /* variable */
$(SOMETHINGELSE) /* command */
${FOO} */ variable substitution */
于 2012-05-24T15:42:56.513 に答える
1

$(...)サブシェルでその内容を実行しますが、変数の値を取得しません。プレーン$APACHE_HOMEまたはを使用できます${APACHE_HOME}。これは、切り替えたように聞こえます。

于 2012-05-24T15:43:56.120 に答える
1

$(something)somethingコマンドを実行し、コマンドの出力を置き換えるようにシェルに指示します。1

変数の出力を置き換えたいので、次$のように変数の前に が必要です。CONF_FILE=$APACHE_HOME/conf/httpd.conf

CONF_FILE=${APACHE_HOME}/conf/httpd.confまたは、 (括弧の代わりに中括弧に注意してください)を使用することもできますが、実際には必要ではありません。


1これは、コマンドの出力を変数に割り当てたい場合に便利です。例えば:

MY_VAR="$(egrep 'someline' somefile.txt)"
于 2012-05-24T15:42:32.853 に答える