"bash -c"私のサブシェルの変数を解析する方法は?
以下では、2番目のサブシェル(内部に「echo」を持つサブシェル)が正しく解析されます。 「touch」を使用する最初のサブシェルはそうではありません。
/bin/bash -c "\
A=/tmp/foo; \
echo $( touch \$A; ); \
echo $( echo in subshell, \$A; ); \
"
ベストアンサー1
その理由は簡単です。なぜなら、サブシェルはサブシェルではなく現在のシェルで計算されるからです。エスケープすると$()
期待どおりに動作します。
/bin/bash -c "\
A=/tmp/foo; \
echo \$( touch \$A; ); \
echo \$( echo in subshell, \$A; ); \
"