bash 변수 대체 및 인용

미샤

아마도 간단한 질문 일 수도 있지만 따옴표가 변수와 어떻게 작동하는지 궁금합니다. 변수 값 주위의 따옴표도 해당 변수에 포함됩니까? 예를 들면 :

fred="\*"
echo $fred

결과는 다음과 같습니다.

\*

왜 그런 겁니까? 나는 그것이 \*$ fred에 포함되어 출력이 다음과 같을 것이라고 생각합니다.

*

그러나 그것은 일어나는 일이 아닙니다.

카밀 쿡

에서 bash는 수동 쉘 확장 횟수의 강조 광산 :

확장 순서는 다음과 같습니다. 중괄호 확장; 물결표 확장, 매개 변수 및 변수 확장 , 산술 확장 및 명령 대체 (왼쪽에서 오른쪽으로 수행) 단어 분할; 및 파일 이름 확장.

이를 지원할 수있는 시스템에는 프로세스 대체라는 추가 확장이 있습니다. 이것은 물결표, 매개 변수, 변수, 산술 확장 및 명령 대체와 동시에 수행됩니다.

이러한 확장이 수행 된 후 원래 단어에있는 인용 문자는 자체적으로 인용되지 않는 한 제거됩니다 ( 인용문 제거 ).

그런 다음 인용 제거 확장 대체 할 수있는 뭔가 \*에 대한 *강조 광산 :

이전 확장 이후, 위 확장 중 하나에서 발생하지 않은 문자 '\', '' '및' " '의 인용되지 않은 모든 항목 이 제거됩니다 .

그러나 여기에서 하나의 확장 (중요도 포함)이 발생합니다-변수 확장. 변수 확장으로 $fred대체됩니다 \*. \*인용 제거가 수행되지 않도록 문자열은 다른 확장의 결과이다. 그래서 그것은 \*.

변수 값 주위의 따옴표도 해당 변수에 포함됩니까?

No. $fred는 두 문자를 포함합니다 \*.

왜 그런 겁니까?

\또 다른 확장 기인 경우 제거되지 않는다.


파일 이름 확장에 관심이있을 수 있습니다. 파일 이름 확장이 때 발생하는 단어 분할 확장 후 "단어"파일 이름 확장을위한 "자격"인 경우. 예를 들어 *작은 따옴표 나 큰 따옴표 안에없고 이스케이프되지 않은 문자 가있는 경우 "단어"는 파일 이름 확장에 적합 합니다. *에서는 \*그래서 백 슬래시 문자로 이스케이프 *수행되지 않은 결과 파일 이름 확장에서 여기에 "패턴 문자"... 아닙니다.

글 로빙은 실제로 할당에서 발생합니까?

아니, "Globing"즉. 변수 할당시 파일 이름 확장이 수행되지 않습니다. 에서 bash는 쉘 매개 변수 :

변수는 다음과 같은 형식의 명령문으로 할당 될 수 있습니다.

name=[value]

... 파일 이름 확장이 수행되지 않습니다. ...

재미있는 측면 : 3 개의 슬래시로 파일 이름 확장을 트리거 할 수 있습니다.

fred="\\\*"
touch '\file_with_backslash'
echo $fred  # will output `\file_with_backslash` 
            # and other files you have with leading backslash...

그래서 fred="\\\*"assings \\*to fred(2 개 \\는 single로 대체됩니다 \). 그런 다음에 echo $fred에 있기 때문에, \\백 슬래시는 baskslash를 탈출하고, 왼쪽은 *이 패턴 문자와 파일 이름 확장을위한 단어의 자격이 그래서 이스케이프되지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

BASH 변수 대체 (?)

분류에서Dev

bash 변수를 gsub () 및 match ()에 대한 정규식 인수로 어떻게 사용할 수 있습니까?

분류에서Dev

cut / awk 대신 bash 변수 대체 사용

분류에서Dev

Bash : 변수 내용을 명령 대체에 인수로 삽입-올바르게 인용하는 방법?

분류에서Dev

"bash -c"로 변수 설정 및 사용

분류에서Dev

Bash 배열에서 매개 변수 대체 사용

분류에서Dev

Bash 배열에서 매개 변수 대체 사용

분류에서Dev

함수 인수로 Bash 대체 제공

분류에서Dev

Korn 쉘 및 Bash는 SSH를 통한 공백으로 변수 대체

분류에서Dev

c 매크로, 매개 변수 확인 및 nop로 대체

분류에서Dev

개체 및 변수에 대한 포인터 C ++

분류에서Dev

콜론 (:) 및 대시 (-)가있는 bash 설정 변수 (lftp에서 사용됨)

분류에서Dev

변수 대체를 사용한 평가 및 실행

분류에서Dev

이 bash 인수 대체입니까?

분류에서Dev

awk 및 인용 변수에서 bash 배열 사용 : 구문 충돌 문제

분류에서Dev

함수에서 Bash 변수 대체

분류에서Dev

상수 변수 대 참조 변수 및 읽기 전용 변수

분류에서Dev

인라인 교체 bash (변수를 사용하여 줄을 새 줄로 교체)

분류에서Dev

sed를 사용하여 큰 따옴표로 묶인 문자열을 bash 변수로 대체

분류에서Dev

Bash에서 대문자 및 대체를위한 매개 변수 확장을 어떻게 중첩합니까?

분류에서Dev

BASH에서 매개 변수 대체를 위해 변수에 sed 인수를 저장하는 방법

분류에서Dev

Bash 매개 변수 배열 $ @ 인덱싱 및 수정

분류에서Dev

JSON 문자열의 Bash 변수 대체

분류에서Dev

JSON 문자열의 Bash 변수 대체

분류에서Dev

날짜별로 BASH 변수 대체

분류에서Dev

Bash에서 이중 변수 대체

분류에서Dev

Bash의 중첩 변수 대체

분류에서Dev

명령 내 Bash 매개 변수 대체

분류에서Dev

bash 명령 대체 중 빈 변수

Related 관련 기사

  1. 1

    BASH 변수 대체 (?)

  2. 2

    bash 변수를 gsub () 및 match ()에 대한 정규식 인수로 어떻게 사용할 수 있습니까?

  3. 3

    cut / awk 대신 bash 변수 대체 사용

  4. 4

    Bash : 변수 내용을 명령 대체에 인수로 삽입-올바르게 인용하는 방법?

  5. 5

    "bash -c"로 변수 설정 및 사용

  6. 6

    Bash 배열에서 매개 변수 대체 사용

  7. 7

    Bash 배열에서 매개 변수 대체 사용

  8. 8

    함수 인수로 Bash 대체 제공

  9. 9

    Korn 쉘 및 Bash는 SSH를 통한 공백으로 변수 대체

  10. 10

    c 매크로, 매개 변수 확인 및 nop로 대체

  11. 11

    개체 및 변수에 대한 포인터 C ++

  12. 12

    콜론 (:) 및 대시 (-)가있는 bash 설정 변수 (lftp에서 사용됨)

  13. 13

    변수 대체를 사용한 평가 및 실행

  14. 14

    이 bash 인수 대체입니까?

  15. 15

    awk 및 인용 변수에서 bash 배열 사용 : 구문 충돌 문제

  16. 16

    함수에서 Bash 변수 대체

  17. 17

    상수 변수 대 참조 변수 및 읽기 전용 변수

  18. 18

    인라인 교체 bash (변수를 사용하여 줄을 새 줄로 교체)

  19. 19

    sed를 사용하여 큰 따옴표로 묶인 문자열을 bash 변수로 대체

  20. 20

    Bash에서 대문자 및 대체를위한 매개 변수 확장을 어떻게 중첩합니까?

  21. 21

    BASH에서 매개 변수 대체를 위해 변수에 sed 인수를 저장하는 방법

  22. 22

    Bash 매개 변수 배열 $ @ 인덱싱 및 수정

  23. 23

    JSON 문자열의 Bash 변수 대체

  24. 24

    JSON 문자열의 Bash 변수 대체

  25. 25

    날짜별로 BASH 변수 대체

  26. 26

    Bash에서 이중 변수 대체

  27. 27

    Bash의 중첩 변수 대체

  28. 28

    명령 내 Bash 매개 변수 대체

  29. 29

    bash 명령 대체 중 빈 변수

뜨겁다태그

보관