0

他の環境変数を読み取る Bash スクリプトを作成しています。

echo "Exporting configuration variables..."
while IFS="=" read -r k v; do
    key=$k
    value=$v

    if [[ ${#key} > 0 && ${#value} > 0 ]]; then
        export $key=$value
    fi
done < $HOME/myfile

変数があります:

$a=$b/c/d/e

次のように呼び出したい$a

cp myOtherFile $a

コピー先フォルダの結果は「$b/c/d/e」で、エラーが表示されます。

"$b/c/d/e" : No such file or directory

文字どおりフォルダ パスとして解釈されるためです。

cpコマンドで使用する前に、このパスを再解釈できますか?

4

3 に答える 3

1

これを行う必要evalがあります:

$ var=foo
$ x=var
$ eval $x=another_value
$ echo $var
another_value

使用する前に、このドキュメントをお勧めしますeval: http://mywiki.wooledge.org/BashFAQ/048

そして、より安全なアプローチは、declare代わりに使用することですeval:

declare "$x=another_value"

最新のchepner 2に感謝します。

于 2012-10-01T15:48:16.573 に答える
1

$HOME/myfileparameter-expansion などの Bash 表記をサポートしたいようです。$HOME/myfileこれを行う最善の方法は、本質的に Bash スクリプトになるように変更することだと思います。

export a=$b/c/d/e

ビルトインを使用してsource、現在の Bash スクリプトの一部として実行します。

source $HOME/myfile
... commands ...
cp myOtherFile "$a"
... commands ...
于 2012-10-01T15:25:06.880 に答える
0

これを試して

cp myOtherFile `echo $a`
于 2012-10-01T15:24:24.103 に答える