쉘 스크립트에서 eval을 사용하여 출력에 중첩된 특수 문자를 할당하는 방법

쉘 스크립트에서 eval을 사용하여 출력에 중첩된 특수 문자를 할당하는 방법

다른 변수가 연결된 변수에 특수 헌장을 할당하려고 합니다.

[root@STAGING scripting]# FILLBLANK=*******
[root@STAGING scripting]# k=1
[root@STAGING scripting]# eval echo  \"\${FILLBLANK$k}\"
***
[root@STAGING scripting]#

여기서 출력을 변수에 어떻게 할당할 수 있나요?

[root@STAGING scripting]# a=$(eval echo  \"\${FILLBLANK$k}\")
[root@STAGING scripting]# echo $a
= 1 b `echo filledvalue output reference.properties safe.sh sshpass-1.05-
1.el6.x86_64.rpm storefront_properties.sh storefront_properties.sh_bkp 
test.sh
[root@STAGING scripting]#

답변1

다음과 같은 변수를 만들고 foo1그 중 하나를 foo2확장 하려는 경우eval아니요. Bash, ksh 및 Zsh는 인덱싱 전용으로 설계된 배열 및 연관 배열을 지원합니다. 바라보다BashGuide 배열 소개.

$ foo[0]=aa
$ foo[1]=bb
$ k=1
$ echo "${foo[$k]}"
bb

참고하세요인용 부호위에. 실제로 귀하의 질문은 다음과도 관련이 있습니다.인용 부호. 에 할당하는 대신 인쇄합니다(실제로는 인쇄 a로 확장 ).echo

$a=*
$에코 "$a"
*
$에코$a
[파일 이름이 잔뜩...]

답변2

실제 문제를 설명하는 대신 최소한 이상한 코드를 보여주기 때문에 도움을 드리기가 어렵습니다.

하지만 아마도 이것이 도움이 될 것입니다:

FILLBLANK1="*******"
FILLBLANK[1]="*******"
k=1
echo "$FILLBLANK1"
echo "${FILLBLANK[1]}"
eval echo  \"\${FILLBLANK$k}\"
a="$(eval echo  \"\${FILLBLANK$k}\")"
echo "$a"

관련 정보