Linux에서 다른 변수 참조

Linux에서 다른 변수 참조

다음과 같은 test.sh 스크립트가 있습니다.

#!/bin/bash
echo "$1"

다음과 같이 다른 스크립트에서 이 스크립트를 호출합니다.

#!/bin/bash
declare -A val
val[first]="./test.sh ${value} | grep testing "

for KEY in "${!val[@]}"; do
  value="testing"
  echo "${val[$KEY]}"
done

echo "${val[$KEY]}"반품./test.sh | grep testing

value 변수의 값을 인쇄하지 않습니다. 왜?

답변1

지금까지 스크립트에서는 변수를 정의했지만 평가하지는 않았습니다.

할당 "./test.sh ${value} | grep testing "하지만 ${value}다음과 같이 확장됩니다.이것일. 그러나 이 시점에서는 value이를 정의하지 않았으므로 비어 있고 문자열은 "./test.sh | grep testing". 쉘이 변수를 확장하는 것을 방지하려면 큰따옴표( ') 대신 작은따옴표( )를 사용하십시오."

'./test.sh ${value} | grep testing '

나중에 echo변수의 값을 얻게 됩니다. 네가 원한다면구현하다./test.sh ...평가해야 하는 변수에 저장하는 명령입니다.

eval "${val[$KEY]}"

관련 정보