Bash変数置換の問題

Bash変数置換の問題

Bashでの変数の置換に問題があります。以下のコードの指示に従っていますが、$ varを展開した後、cd $ dは元のディレクトリに移動しません。

export var="/a/b/c"
for d \`cat file.f`; do
cd $d
done

ファイル.f:

$var/aa/bb/cc

ベストアンサー1

以下を使用する必要がありますeval

export var="/a/b/c"
for d in $(cat file.f)
do
    eval echo "$d"
    eval cd $d
    pwd
done

あるいは、より良い方法はreadを使用することです。

export var="/a/b/c"
while read d
do
        eval echo "$d"
        eval cd "$d"
        pwd
done < file.f

おすすめ記事