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
答え2
あなたはそれを使用することができます:
$ var="/home/durrantm/a/b/c"
$ cd $var
$ pwd
/home/durrantm/a/b/c