POSIX를 사용하는 다음 "읽기 전용"이 맞습니까?

POSIX를 사용하는 다음 "읽기 전용"이 맞습니까?

다음을 읽기 전용으로 정의했습니다.

readonly root_command='sudo -s'

나중에 내 스크립트에서 다음과 같이 사용되었습니다.

exec $root_command

내 질문은 아마도 내가 그럴 수도 있다는 것입니다.느린아니면 뭔가, 하지만 난 완전히 이해가 안 돼요POSIX 매뉴얼 페이지, 예를 들어 작은따옴표를 사용할 수 있나요? 아니면 큰따옴표를 사용해야 하나요? -p그런 옵션의 목적은 무엇인가요?

감사해요.

답변1

POSIX에 따르면에는 readonly두 가지 형식이 있습니다.

  1. readonly var, 이는 쉘 변수를 var읽기 전용으로 표시하고 동시에 선택적으로 var( )에 값을 할당합니다.readonly var=value

  2. readonly -p, 모든 읽기 전용 변수의 이름과 값을 인쇄합니다.

이들은 결합되지 않습니다. 현재 읽기 전용 변수를 모두 보는 데 사용할 수 있으며 , 변수를 읽기 전용으로 표시하는 데 -p사용할 수도 있습니다 ( ).readonly-p

변수를 읽기 전용으로 표시하면 값을 지정할 수도 있습니다(나중에 변경할 수 없으므로 이 값은 영구적인 값이 됩니다). 이는 여느 변수 할당과 동일하며, 단어가 있는 var=value곳에 형태를 취하므로 value평소와 동일한 규칙(변수 확장을 방지하려면 작은 따옴표, 변수 확장을 허용하려면 큰 따옴표 등)을 사용하여 적절하게 인용해야 합니다. 필요합니다. ).

이는 의 exec $root_command현재 값에 따라 달라지며 $IFS, 명령을 저장하려면 변수보다는 함수를 사용하는 것이 더 좋습니다.

관련 정보