0

私は bash の高度なスクリプティング ガイドを読んでいました (記憶が正しければ)、eval変数の更新を強制するために使用できる程度のことが書かれていました。

だから私はこれを試しました:

randomPath="/path/$var/here/"  # var is not defined at this point
echo $randomPath
/path//here/
var="is" # initially defining var
eval $randomPath
zsh: no such file or directory: /path//here/

エラーメッセージの意味が分からず、eval をちゃんと使っているか疑問です。

私が期待していた出力は次のとおりです。

eval $randomPath
echo $randomPath
/path/is/here
4

1 に答える 1

4

問題は、$varが で既に代入されておりrandomPath="/path/$var/here/"、空白であるため、randomPathに設定されていること/path//hereです。早期置換を防ぐために一重引用符を使用します。

randomPath='/path/$var/here/'

2 番目の問題は、コマンドとしてeval x実行されることです。xあなたがしたいことは、新しく評価された変数を文字列として返すことです:

eval echo $randomPath

通常の方法で変数に格納できます。

randomPath=`eval echo $randomPath`
于 2013-06-08T20:16:21.340 に答える