Linux 쉘에서 "var=${str=expr}"의 의미는 무엇입니까?

Linux 쉘에서 "var=${str=expr}"의 의미는 무엇입니까?

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를 생성하는 상위 셸 저장소입니다.

관련 정보