명령 대체 구문 $()는 연산자 또는 명령으로 간주됩니까?

명령 대체 구문 $()는 연산자 또는 명령으로 간주됩니까?

이 중 하나라고 부르는 공식 문서를 찾을 수 없습니다. 어쨌든, 명령과 운영자의 기술적 차이점은 정확히 무엇입니까?

답변1

POSIX의 텍스트는 아래에 나열되어 있습니다.2.6 단어 확장, 물결표 확장, 매개변수 확장, 산술 확장, 필드 분할, 경로 이름 확장 및 따옴표 제거 등이 있습니다.

다시 말하지만, Bash의 매뉴얼은 아래에 나열되어 있습니다.쉘 확장.

전자는 "연산자"를 리디렉션 연산자로 사용하고, ;, &, |, &&등도 사용 ||하므로 (그 중 하나가 아닙니다. 분명히 그것은 명령도 아니므로 용어가 아무리 중요하더라도 둘 다 아니라고 말해야 합니다.

답변2

한 가지 명령:

  • 일반적으로 이름에는 영숫자 문자열이 있습니다.

  • 외부 유틸리티, 내장 도구 또는 기능입니다. 이런 의미에서 내장 함수가 출력으로 생성하는 대부분은 type명령입니다.

  • 가지다접두사상징.

  • 일반적으로 어떤 종류의 I/O가 변경됩니다.

운영자:

  • 일반적으로 이름은 없지만 별명이 있을 수 있는 기호 문자열입니다.

  • 내장 함수는 이해되지 않습니다 type(혼란스러운 이름의 함수나 스크립트가 있는 경우 제외).

  • 더 자주중위또는접미사통사론.

  • 때로는 교통경찰처럼 I/O를 지시하지만 내용을 변경하지는 않습니다.존재하다그것.

  • 때로는 프로세스 순서를 안내합니다.

$()명령이다치환:

  • 첫째, (또는 보는 방법에 따라 마지막으로) 문자열입니다.
  • 문자열은 텍스트로 구성됩니다.산출거기에 나열된 명령.

[쉘 내장 명령은 다음과 같습니다.

  • test필수 접미사가 붙은 명령 입니다 ].

[[쉘 키워드 입니다 bash:

  • [보다 일반적이고 빠른 내장 명령 과 비슷 하지만 SFAIK에는 이에 상응하는 test.
  • 셸 키워드에는 명령처럼 보이지만 연산자처럼 동작하고 구분 기호 및 구문으로 다양한 형제 키워드가 필요한 및 time같은 항목이 포함됩니다. for이 코드는 type출력에서 ​​내장 함수를 실행하여 help왼쪽에 키워드 목록과 내장 함수를 표시합니다.

    COLUMNS=30 help -m | tail -n +9 | 
    tee >(cut -d ' ' -f2) >(cut -c 17-30 | cut -d ' ' -f1) > /dev/null | 
    sort | sed -n "s/.*/type '&'/e"';/found/!p'
    

이것을 음성언어와 비교해보세요:

  • 명령(및 일부 키워드)은 동사와 같습니다.
  • 파일과 문자열은 명사입니다.
  • 연산자는 구두점이나 전치사와 같습니다.

추상적으로 연산자는 유사한 명령으로 대체될 수 있는 다른 구문을 가진 명령일 뿐입니다.접두사스타일 명령 및 기타 명령. 사용이 불편할 수 있습니다.

분석적으로 말하면, 쉘의 컴파일된 코드는 디스어셈블러를 통해 실행될 수 있으며 연산자는 단지 명령이거나 오히려 일련의 어셈블리 언어 명령입니다.

답변3

사용자의 관점에서 볼 때 명령 대체는 쉘 기본 요소입니다. 이는 여러 작업(하위 쉘 시작, 명령 실행...)을 수행하고 값(명령의 출력)을 반환할 수 있는 쉘에 구현된 함수입니다. 명령 대체는 일반적으로 쉘이 확장을 수행하기 전에 명령에 대한 인수입니다. 즉, 사용자는 쉘 기능을 사용하여 쉘 프로세스의 결과를 얻습니다.

관련 정보