f1="filename1";
i=1;
c=f$i
echo $c
echo $c
이 출력으로 "filename1"을 반환하도록하기 위해 사용해야하는 셸 명령은 무엇입니까?#!/bin/sh (POSIX sh)를 사용하여 변수를 이름으로 찾는 방법은 무엇입니까?
f1="filename1";
i=1;
c=f$i
echo $c
echo $c
이 출력으로 "filename1"을 반환하도록하기 위해 사용해야하는 셸 명령은 무엇입니까?#!/bin/sh (POSIX sh)를 사용하여 변수를 이름으로 찾는 방법은 무엇입니까?
eval
을 사용하여 변수 대체를 "중첩"할 수 있습니다.
f1="filename1";
i=1;
eval c=\${f$i}
echo $c
가변 간접 지정을 사용합니다.
#!/bin/bash
f1="filename1";
i=1;
c=f$i
echo ${!c}
bash (GNU bash, 버전 4.1.2 (1) -release)에서 작동합니다. 나는 다른 포탄에서 시도하지 않았다.
eval과 같이 집중적 인 작업을 피하십시오. 연관 배열을 사용하십시오.
#!/bin/bash
typeset -A v
c[f1]=filename1
i=1
echo ${c[f$i]}
덕분에 –
http://google-styleguide.googlecode.com/svn/trunk/shell.xml 상태에서 eval을 피하도록해야합니다. 이 예제는 안전하지만 사용자 입력에 eval을 사용하지 마십시오. –
POSIX'sh'에서 이것을 지원해야하는 경우가 아니라면 가능한 경우 간접 매개 변수 확장을 위해 쉘의 구문을 사용하십시오. – chepner