할당으로 시작하는 명령과 함께 명령을 사용할 수 없는 이유는 무엇입니까?

할당으로 시작하는 명령과 함께 명령을 사용할 수 없는 이유는 무엇입니까?

Bash 매뉴얼에서:

명령[-pVv]주문하다[논쟁...]

command라는 셸 함수를 무시하고 인수를 사용하여 명령을 실행합니다. 쉘 내장 명령이나 PATH를 검색하여 찾은 명령만 실행하십시오. ls라는 쉘 함수가 있는 경우 함수 내에서 "command ls"를 실행하면 함수를 재귀적으로 호출하는 대신 외부 명령 ls가 실행됩니다. -p 옵션은 PATH의 기본값을 사용하여 모든 표준 유틸리티를 찾을 수 있음을 의미합니다. 명령을 찾을 수 없거나 오류가 발생하면 이 경우 반환 상태는 127이고, 그렇지 않으면 명령의 종료 상태입니다.

설명서에 고장 원인이 설명되어 있나요?주문하다할당입니까, 아니면 할당(환경 변수용)으로 시작합니까?

$ command aaa=1
aaa=1: command not found

$ command aaa=1 echo hello
aaa=1: command not found

답변1

command선택적 할당, 선택적 리디렉션 및 선택적 단어(명령 이름 및 선택적 인수 포함)의 비어 있지 않은 시퀀스인 POSIX가 "간단한 명령"이라고 부르는 것과 Bash에서 사용되는 "명령" 사이에 혼동이 있습니다. 매뉴얼 개요서 "이것은 단지 명령 이름일 뿐입니다.

여기서 할당을 실제로 사용하려면 다음을 실행하면 됩니다.

aaa=1 command echo hello

명령이 전혀 없고 할당만 있는 경우에는 command애초에 검색할 내장 명령이나 PATH에 명령이 없기 때문에 명령을 사용하는 데 큰 의미가 없습니다.

실제로 변수를 설정하려면 command다음을 사용할 수 있습니다.

command typeset aaa=1

또는

command declare aaa=1

답변2

"let" 명령 사용(산술 표현식의 경우)

단순 할당의 명령 형식 aaa=1은 입니다 let aaa=1. 그러나 이는 산술 표현식에서만 작동합니다(문자열 할당 아님).

$ command let aaa=1
$ echo $aaa
1
$ command let aaa=6*3+5
$ echo $aaa
23

관련 정보