Bash에서 기본의 정의는 무엇입니까?

Bash에서 기본의 정의는 무엇입니까?

Bash 매뉴얼에서

6.4 Bash 조건식

조건식은 [[ 복합 명령과 test 및 [ 내장 명령에서 사용됩니다.

표현식은 단항 또는 이진일 수 있습니다. 단항 표현식은 파일 상태를 확인하는 데 자주 사용됩니다. 문자열 연산자와 숫자 비교 연산자도 있습니다. 파일 매개변수가 다음 중 하나인 경우예비 선거형식이 /dev/fd/N인 경우 파일 설명자 N을 확인하세요. 파일 매개변수가 다음 중 하나인 경우예비 선거 /dev/stdin, /dev/stdout 또는 /dev/stderr 중 하나이며 각각 파일 설명자 0, 1 또는 2를 확인합니다.

[[와 함께 사용하면 "<" 및 ">" 연산자는 현재 로케일을 사용하여 사전순으로 정렬됩니다. 테스트 명령은 ASCII 순서를 사용합니다.

별도의 규정이없는,예비 선거 파일에 대해 작동하는 파일 작업은 기호 링크를 따르고 링크 자체가 아닌 링크 대상에서 작동합니다.

Junior 정의

기본과 운영자 또는 운영의 차이점은 무엇입니까?

답변1

앞서 언급했듯이 이것은 전문 용어입니다. 이것배쉬 참조 매뉴얼용어는 정의되지 않았습니다. 독자는 이를 알고 있다고 가정합니다.

산술식의 피연산자에 사용되는 것을 쉽게 찾을 수 있습니다. 예시 보기산술 표현안에Fortran 77 언어 참조 매뉴얼, 즉

주요 숫자는 산술 표현식의 기본 구성 요소입니다. 기본 형태는 다음과 같습니다.

  • 부호 없는 산술 상수

  • 산술 상수의 기호 이름

  • 산술 변수 참조

  • 산술 배열 요소 참조

  • 산술 함수 참조

  • 괄호 안의 산술 표현식

POSIX에서 그 사용은 (여전히) 주로 독자의 용어에 대한 사전 지식에 의존합니다. 예를 들어, 쉘 명령 언어에서는 다음을 참조합니다.find주문하다:

(예를 들어, POSIX.1-2008의 시스템 인터페이스 볼륨에 정의된 exec 함수 중 하나를 사용하여 find를 호출하는 경우 - name Primary에 대한 인수 또는 fnmatch() 함수에 대한 패턴 인수에서),

그리고 읽을 때저것부분분명히 원래 숫자는 피연산자와 동일한 의미를 갖습니다. 즉, 명령 구문 분석의 각 수준에서 명령(또는 주 명령)에는 고려해야 할 몇 가지 주요 요소가 있으며, 남은 것은 상수나 변수(일명 "피연산자")뿐입니다.

답변2

용어의 사용이 모호한 것 같습니다. 의미하는 것 같다

  • 운영자 또는
  • 부울 값을 생성하기 위해 적절하게 하나 또는 두 개의 피연산자와 결합하는 연산자

인용하다:

이것배쉬 참조 매뉴얼, 부분3.2.4.2 조건부 구성, 이야기하다 [[... ]], 말하다,

...표현은 아래에 설명된 기본 색상으로 구성됩니다.Bash 조건식. …

이것은 귀하의 질문에 인용한 다소 혼란스러운 부분입니다. 계속해서 ,,,…,,…,…,,… 등을 나열합니다.-a file-b file-t fdfile1 -ef file2-z stringstring1 != string2

그리고이것test명령에 대한 POSIX 사양, 부분피연산자 (이 소스를 식별해 준 BinaryZebra에게 감사드립니다)는 다음과 같이 말했습니다.

양식의 두 요소에 대한 기본 선택:
    -primary_operator primary_operand
라고1달러 예비선거. 두 가지 형태 중 하나로 세 가지 구성 요소를 기본적으로 선택합니다.
    primary_operand -primary_operator primary_operand

    primary_operand primary_operator primary_operand
라고이진 기본. …

그래서,두 소스 모두 동의하는 것 같습니다. 등이 기본입니다. 그러나 참조 매뉴얼 섹션 6.4에서 "-b file-c file문서-b원시 인수"에서는 연산자(예:,,, ... -c)를 기본으로 참조하는 것처럼 보입니다 .

답변3

짧은 대답(내 말):

테스트에 나오는 "단어"( [[and ]], or [and ])는 공백으로 구분되어 주요 단어가 됩니다. 단어는 ( !), ( -f) 또는 값 ( $var)일 수 있습니다. 첫 번째 [or가[[ 명령("테스트")으로 이해되면 이 단어도 "인수"입니다.

분할 후 (일부) 두 단어가 합쳐집니다. (-f) 및 ($var)와 마찬가지로 "단항 기본"이라고 합니다. 그리고 (일부는) 세 단어를 "이진 기본"이라고 합니다.

그러나 이 설명은 덜 정확하고 일부 목적에 따라 약간 다릅니다.

더 긴 답변:

이 개념은 Bourne 쉘에서 나온 꽤 오래된 개념입니다.이는 POSIX 사양에 자세히 설명되어 있습니다(예:):

피연산자
애플리케이션은 모든운영자그리고주요 요소다음과 같이 렌더링됨별도의 주장테스트 유틸리티에.
다음 기본 색상을 사용하여 표현식을 구성할 수 있습니다.

표현하다중괄호 안의 내용을 나타냅니다.[expression].

여기서 피연산자를 참고하세요.그리고연산자는 테스트 유틸리티에 제공되는 인수(공백으로 구분된 단어)입니다.

표현식의 개념은 man bash예를 들어 검색 시 시작 부분 근처에서도 사용됩니다 [[ expression ]]("복합 명령"의 형태).

표현식은 다음 부분으로 구성됩니다.예비 선거아래에서는 조건식으로 설명합니다.
조건부 연산자(예: -f)는 주 연산자로 인식되도록 인용 해제되어야 합니다.

결정적인

마지막으로 위에 링크된 POSIX 사양 페이지에서 검색할 수 있습니다.다시 여기 군이 줄(및 아래 줄)의 경우:

두 가지 형식의 요소가 있는 기본 요소를
-primary_operatorprimary_operand 라고 합니다.
1달러 예비선거.

다음 줄은 최대 4개의 인수(공백으로 구분된 단어, 여기서부터 시작함)가 있는 표현식을 사용하여 기본 색상을 정의하려고 합니다.

4 단어 기본 단어는 없습니다( !(부정) 3 단어 기본 단어의 일부로 계산되지 않은 경우).

POSIX 설명은 개발자가 내장한 많은 극단적인 경우에는 제대로 작동하지 않습니다 [[ ]].

답변4

에서 man bash:

  • Compound Commands섹션의:

    표현은구성하다원래 선택은 아래 조건식에 설명되어 있습니다. (1)

    가정 어구운영자예를 들어 -f를 기본으로 인식하려면 따옴표를 풀어야 합니다. (2)

    다음 연산자를 사용하여 표현식을 결합할 수 있습니다. [...] (목록은 계속됩니다: ( ), !, && 및 ||) [...] && 및 || 연산자는 평가되지 않습니다.식 2값이 있는 경우식 1충분히 결정적인 반환 값전체 조건식. (삼)

  • CONDITIONAL EXPRESSIONS섹션의:

    표현은형성다음 단항 또는 이진 기본 색상에서 나옵니다. (4)

    그렇다면파일 매개변수예비 선거 중 하나 [...] (5)

    달리 명시하지 않는 한, 예비파일에 대한 작업 수행[...](6)

우리는 이것을 이렇게 이해할 수 있습니다:

(1)과 (4)에서 기본은 다음과 같습니다.조건식의 가장 작고 자율적인 요소, 예를 들어 , -a FILE, FILE1 -nt FILE2, STRING, -n STRING... STRING1 == STRING2는 단항 또는 이항과 관련됩니다.운영자.

(2)(및 (4), (5) 및 (6))에서,확장하면 연산자 자체를 "기본"으로 지정할 수 있습니다.,관련 피연산자와 함께 발생한다는 것을 이해합니다.("명령"과 마찬가지로 내장 유틸리티나 프로그램을 지정하거나 적절한 인수를 사용하여 이 유틸리티나 프로그램에 작성된 명령줄을 지정할 수 있습니다.)

그리고 (1)과 (3)에 의해루디먼트는 더 복잡한 조건식을 형성하기 위해 결합할 수 있는 가장 작은 모듈입니다.예를 들어 -a FILE && FILE1 -nt FILE2&&(AND) 연산자를 사용하고 -n STRING || STRIN1 == STRING2||(OR) 연산자 ! STRING와 !(not) 연산자를 사용합니다.

관련 정보