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

답변2

당신은 그것을 사용할 수 있습니다 :

$ var="/home/durrantm/a/b/c"
$ cd $var
$ pwd
/home/durrantm/a/b/c

관련 정보