Linux 쉘에서 "var=${str=expr}"의 의미는 무엇입니까? 구체적으로 설명해 줄 수 있는 사람은 누구입니까?
답변1
다음의 "매개변수 확장"을 참조하십시오 man bash
.
${parameter:=word}
기본값을 할당합니다. 매개변수가 설정되지 않거나 null인 경우 단어의 확장이 매개변수에 할당됩니다. 그런 다음 매개변수의 값이 대체됩니다. 위치 매개변수와 특수 매개변수는 이 방법으로 할당할 수 없습니다.
콜론은 위에 설명되어 있습니다.
부분 문자열 확장을 수행하지 않을 때 아래 문서화된 양식을 사용하여 bash는 설정되지 않았거나 null인 매개변수를 테스트합니다. 콜론을 생략하면 설정되지 않은 매개변수에 대해서만 테스트가 수행됩니다.
증거:
var=${str=expr}
echo $var
echo $str
산출:
expr
expr
답변2
Bash에서는 $( )를 사용하여 서브셸에서 작업을 시작할 수 있습니다.
예:
#!/usr/bin/env bash
foo=${ls}
echo $foo
이 스크립트는 $foo 변수를 ls
.
(그리고 echo $foo
내용을 보여줄 것입니다).
이제 좀 더 구체적인 질문으로 넘어가겠습니다. 나도 결과를 몰랐기 때문에 'linux shell'이 내 Linux 배포판의 기본 쉘인 bash를 의미한다고 가정하고 테스트했습니다.
다음 파일을 만들었습니다.
#!/usr/bin/env bash
foo=${str="test 1 2 3"}
echo $foo
그리고 그것을 실행했습니다 :
> ./test t
test 1 2 3
문자열(또는 표현식)의 값을 변수에 할당하는 것으로 보입니다.그리고해당 값을 상위 스크립트에 반환합니다.
요약하자면:
- 새로운 쉘이 시작됩니다
- 새 쉘이 명령을 실행합니다
str=expr
- 상위 쉘은 결과를 출력으로 가져옵니다.
- $var를 생성하는 상위 셸 저장소입니다.