新しいシェルで変数をエクスポートまたは設定できません


1

問題に取り組むとき、私は奇妙なことを経験しました。 このコマンドは機能しないようです。 ( `を使って空白行を埋める)。

エクスポートを利用する場合

> /bin/bash -c "echo $FOO; export FOO=BAR; echo $FOO"
`
`

ただし、このコマンドは予想どおりに機能します。

> echo $FOO; FOO=BAR; export FOO=BAR; echo $FOO
`
BAR

=で設定した場合と同じ問題

> /bin/bash -c "echo $FOO; FOO=BAR; echo $FOO"
`
`

ただし、このコマンドは予想どおりに機能します。

> echo $FOO; FOO=BAR; FOO=BAR; echo $FOO
`
BAR

何が起こっているのでしょうか。

回答:


2

二重引用符の問題です。あなたの殻(「外部」の殻)が拡張します $FOO コマンドを実行する前に。設定した場合 $FOO 何か(例えば "FOO")にあなたは実際にこのコマンドを実行します。

/bin/bash -c "echo FOO; export FOO=BAR; echo FOO"

そして、あなたがTOOにならないなら、あなたはこのコマンドを実行します

/bin/bash -c "echo ; export FOO=BAR; echo "

あなたが期待するものを得るために一重引用符を使ってください。

/bin/bash -c 'echo $FOO; FOO=BAR; echo $FOO'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.