bash - 제목이 변수이고 다른 변수가 포함된 문자열 값을 갖는 변수를 생성할 수 있습니까?

bash - 제목이 변수이고 다른 변수가 포함된 문자열 값을 갖는 변수를 생성할 수 있습니까?

다른 명령을 실행하기 위해 반복하는 배열이 있습니다. 다음 항목으로 넘어가기 전에 배열 값으로 수행해야 할 마지막 작업은 배열 값을 이름으로 사용하여 변수를 만들고 다른 변수를 포함하는 문자열을 할당하는 것입니다.

현재 내 코드는 다음과 같습니다.

for i in ${array[@]} do
    some command
    $i_value="my string including other variables ${other_variable}"
done
echo $i_value

이것을 실행하면 다음 오류가 발생하며 배열 값(가져오는 값)으로 변수를 생성하는 대신 파일을 찾는 이유를 알 수 없습니다.

line 5: *value*_value=my string including other variables *other_variable*: no such file or directory.

답변1

foo_value변수 등을 외부적으로 생성할 필요 가 없고 bar_value단지 스크립트에서 사용해야 하는 경우 연관 배열을 사용해야 할 것입니다. 이와 같이:

declare -A values
for i in "${array[@]}"; do
    # some commands...
    values[$i]="my string including other variables ${other_variable}"
done
echo "${values[$i]}"

# loop over the keys:
for key in "${!values[@]}"; do
    echo "values has key '$key'"
done

(공백과 와일드카드가 포함된 값을 적절하게 처리하려면 주위에 따옴표를 붙이고 싶고 "${array[@]}"그 앞에는 세미콜론이 필요하다는 점에 유의하세요 do. for i in ...; do)

답변2

그냥 export내장된 것을 사용하세요...

예(부수적인 이점: 액세스에 동적 변수 이름을 사용합니다 ;-p)

~$ cat test.sh 
#!/bin/bash

toto="coincoin"
tata="cuicui"

for var in toto tata; do
    export coincoin_${!var}="${var}"
done

echo "${coincoin_cuicui}"
echo "${coincoin_coincoin}"

~$ ./test.sh 
tata
toto

관련 정보