Bash에서 명령 대체를 위해 다음을 수행합니다.
hello=$(ls -la)
echo "$hello"
하지만 아래 명령으로 동일한 작업을 수행하면 실패하고 난수를 찾을 수 없다는 메시지가 나타납니다.
hell=$(RANDOM)
echo "$hell"
산술 확장을 사용하면 이를 극복할 수 있습니다.
hell=$((RANDOM))
echo "$hell"
아래가 작동하지 않는 이유는 무엇입니까? 제가 이해한 바에 따르면 무작위도 명령이므로 숫자 에코를 받아야 합니다.
hell=$(RANDOM)
echo "$hell"
답변1
RANDOM
명령이 아니라 변수입니다. 오직한 세트는 조개껍데기로 구성되어 있는데 뭔가 특별한 것이 있어요:
RANDOM 이 매개변수 (*) 가 참조될 때마다 0에서 32767 사이의 임의의 정수로 확장됩니다. 이 변수에 값을 할당하면 난수 생성기가 시드됩니다. RANDOM이 설정되지 않으면 나중에 재설정되더라도 특수 속성이 손실됩니다.
echo "$RANDOM"
보다 "일반적인" 변수와 같은 변수를 사용하는 방법 HOME
과 같습니다 BASH_VERSION
. 물론 ${RANDOM}
, 일반 괄호 대신 중괄호를 사용하는 것도 가능합니다.
없이 산술 확장에 사용할 $
수 있음산술 문맥, 모든 변수에서 작동합니다.
표현식 내에서 쉘 변수는 매개변수 확장 구문을 사용하지 않고도 이름으로 참조될 수도 있습니다.
(예: x=4; echo "$((x*x))"
인쇄물 16
)
(*여기서 변수와 매개변수의 차이는 무시해도 됩니다.)