여러 변수에 동일한 문자열 할당

여러 변수에 동일한 문자열 할당

$value그 안에 포함된 문자열을 여러 BASH 변수에 할당하고 싶습니다 .

사실 앞서 제시한 예( var1=var2=...=$value)는 제가 원하는 것을 정확하게 반영하지 못합니다. 지금까지 이것을 찾았지만 $value정수인 경우에만 작동합니다.

$ let varT=varz=var3=$value

어떻게 해야 하나요?

답변1

제 생각에는 좀 더 읽기 쉬운 작업을 수행하는 것이 더 좋습니다.

var1="$value" var2="$value" var3="$value" var4="$value" var5="$value" var6="$value" var7="$value" var8="$value" var9="$value" var10="$value"

하지만 이를 매우 짧은 방법으로 수행하려면 다음을 시도해 보세요.

declare var{1..10}="$value"

편집됨: printf 대신 중괄호 확장을 사용하고 eval 대신 선언을 사용합니다. 이는 $value.

참조. 편집 1: 새로운 상황에서도 중괄호 확장을 사용할 수 있습니다.

declare var{T,z,3}="$value"

printf를 처리할 수 있기 때문에 Annotation의 메소드보다 안전합니다 $value.

답변2

let산술 평가를 하고 있습니다. 에서는 bash와 같습니다 (( ... )). 이것이 바로 코드가 정수로만 작동하는 이유입니다.

특별히 이름이 지정된 변수 대신 배열을 사용하십시오.

var=( "$value"  "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" )

printf 'var[5]=%s\n' "${var[5]}"

또는 연관 배열,

declare -A var

var=( ["T"]=$value ["z"]=$value [3]=$value )

printf 'var[T]=%s\n' "${var["T"]}"

루프를 수행할 수도 있습니다.

for varname in var0 var1 varT varfoo; do
    declare -n var="$varname"
    var=$value
done

이 루프는 변수 이름을 반복합니다. 루프 본문 내에서 현재 루프 변수를 참조하는 이름 참조 변수를 만듭니다. 이름 참조 변수의 값이 설정되면 명명된 변수도 설정됩니다.

답변3

value=balabala
eval var{1..10}=\$value
echo $var{1..10}

답변4

다음을 수행할 수 있습니다.

declare {varT,varz}="$value"

관련 정보