변수를 할당한 동일한 줄에 변수를 내보내는 것이 어떻습니까?

변수를 할당한 동일한 줄에 변수를 내보내는 것이 어떻습니까?

~에서이전 명령의 마지막 매개변수는 무엇이었나요?

shellcheck는 변수가 할당된 동일한 줄에 변수를 내보내지 않도록 지시합니다.

이유를 알고 싶습니다.

alias, declare, export, local및 에도 동일한 조언이 적용 됩니까 readonly?typeset

답변1

이것질문Bash에서는 각 명령에 종료 코드가 하나만 있습니다. export foo="$(false)"종료 코드가 false단순히 삭제되는 경우 . 당신이 그렇게한다면

foo="$(false)"
export foo

예를 들어 settings 를 통해 실패한 첫 번째 명령에 대해 조치를 취할 수 있습니다 errexit.

예를 들어 문자열 리터럴을 선언하고 할당하면 export foo='bar'물론 이 문제가 발생하지 않습니다. 그러나 변화는 소프트웨어 개발에서 유일하게 변함없는 것이며, 이러한 진술을 별도로 유지함으로써 미래를 보장할 수 있는 좋은 관리일 뿐입니다.

foo="$(false)$(true)"언급 한 작업별 명령 외에도 단일 작업 내에 여러 명령이 있습니다.pipefailman bash또 다른 함정에 빠지다 .

명심해야 할 또 다른 사항은 선언 및 할당 순서가 때때로 관련이 있다는 것입니다. 예를 들어 변수를 선언해야 합니다.local 앞으로그들을 할당하십시오. (안타깝게도 변수를 선언할 수 없습니다.readonly처음으로 할당하기 전에. )

관련 정보