변수 할당은 변수 이름의 형식과 등호, (선택적) 값으로 구성됩니다.
이것은 유효한 과제입니다.
ABC=123
"$x"1=1
"$x"1
변수 이름이 아니기 때문에 유효한 할당 이 아닙니다. 변수 이름 으로 평가 될 수 있지만 그렇지 않습니다. 실제로 쉘은 그것이 명령이라고 믿습니다.
달성하려는 것을 수행하는 한 가지 방법은 다음과 같습니다.
eval "$x"1=1
bash의 다른 방법 (다른 쉘은 아님)은 다음과 같습니다.
declare "$x"1=1
또는 (또한 bash 전용) :
let "$x"1=1
(사례에는 큰 차이가 없습니다.)
그러나 Jakuje 가 주석 에서 언급했듯이 쉘에 배열 (ksh, bash 또는 zsh)이 있으면 배열을 사용하고 싶을 것입니다.
완전성을 위해 :
eval
임의의 명령을 실행합니다. 따라서 등호 오른쪽에 명령으로 확장되는 변수가 있으면 해당 명령이 실행됩니다. 다음 코드 :
x=a
y='$(echo hello)'
eval "$x=$y"
와 같습니다 a=hello
.
declare
변수를 할당하기 위해 내장 된 bash이며 명령을 실행하지 않습니다. 다음 코드 :
x=a
y='$(echo hello)'
declare "$x=$y"
와 같습니다 a='$(echo hello)'
.
let
declare
명령을 실행하지 않는다는 점에서 와 비슷 합니다. 그러나 반대의 정보는 다음의 제품에 declare
, let
산술 연산에 사용할 수 있습니다 :
let a="1 + 2"
와 같습니다 a=3
.