Bash 따옴표 그 거.

5425 단어 linuxshell
 
bash 스 크 립 트 에는 세 가지 따옴표 가 있 습 니 다.
1. 单引号 ' 2. 双引号 " 3. 反引号 ` 单引号 两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思. 双引号 两个双引号包围起来的字符串,部分特殊字符将起到它们的作用. 这些特殊字符有: 美元符$, 反斜杠\, 反引号, 感叹号!. 反引号 两个反引号包围起来的字符串,将作为命令来运行, 执行的输出结果作为该反引号的内容,称为命令替换, 它有另一种更好的写法: $(command)

우 리 는 몇 가지 예 를 들 어 이 세 가지 따옴표 의 특성 을 더욱 직접적 으로 이해 합 니 다.
1
2
3
4 igi@gentoo ~ $
  echo
  '$HOME' $HOME igi@gentoo ~ $
  echo
  "$HOME" /home/igi
주: 홈 은 내부 변수
2. 역 슬 래 쉬\싱글, 더 블 따옴표 에서 의 표현: 더 블 따옴표 에 있 는\\는 그 뒤의 문 자 를 특별한 의 미 를 가지 게 하거나 원래 의 특수 한 의 미 를 잃 게 합 니 다. 작은 따옴표 에 있 는\는 글자 의 뜻 을 유지 합 니 다.
1
2
3
4 igi@gentoo ~ $
  echo
  '\$HOME' \$HOME igi@gentoo ~ $
  echo
  "\$HOME" $HOME
주: 작은 따옴표 의\\, 뒤에 $를 따라 갑 니 다. 여기 서 전의 가 발생 하여 $가 특별한 의 미 를 잃 고 일반 문자 로 변 합 니 다.
3. 반 따옴표 와 다른 두 따옴표 의 차이: 반 따옴표 로 둘러싸 인 문자열 이 실 행 됩 니 다. 결 과 를 얻 습 니 다.
1
2
3
4
5
6 igi@gentoo ~ $
  echo
  'date' date igi@gentoo ~ $
  echo
  "date" date igi@gentoo ~ $
  echo
  ` date ` Fri Dec 3 18:34:09 CST 2010
주: 반 따옴표 에 있 는 date 는 명령 으로 실 행 됩 니 다. 명령 의 출력 정 보 를 포함 합 니 다.
그들의 차 이 를 알 게 되 었 으 니, 우 리 는 흔히 볼 수 있 는 문 제 를 이야기 합 시다.
1. 반 따옴표 '를 작은 따옴표 로 쓴다'
어 쩔 수 없 이 그들 은 확실히 닮 았 다. 일부 책의 인쇄 글씨체 의 차이 가 높 지 않 거나 인쇄 품질 이 통과 하지 못 해서 많은 초보 자 들 이 잘못 을 인정 하고 반 따옴표 '를 작은 따옴표 로 쓴다.만약 당신 이 반 따옴표 가 어디 에 있 는 지 모른다 면, Esc 키 아래 의 그 버튼 을 보 세 요. 그것 이 바로 반 따옴표 입 니 다.물론 어떤 사람들 이 책 을 읽 는 데 주의 하지 않 는 것 도 흔 한 일이 다.우리 가 반 따옴표 와 작은 따옴표 작용 의 차 이 를 알 게 된다 면 언제 작은 따옴표 를 써 야 하 는 지, 언제 작은 따옴표 를 써 야 하 는 지 알 게 될 것 이다.문자열 이 필요 할 때 작은 따옴표 사용 하기;명령 의 출력 을 포착 하려 면 반 따옴표 를 사용 하 십시오.
2. 따 옴 표를 붙 이 는 것 을 잊 어 버 리 는 것 은 항상 불필요 하지 않 습 니 다. 그 에 둘러싸 인 데 이 터 는 안전 해 지고 bash 에 의 해 절개 되 지 않 습 니 다.
1
2
3
4
5
6
7
8
9
10 igi@gentoo ~ $
  seq
  3 1 2 3 igi@gentoo ~ $
  echo
  ` seq
  3` 1 2 3 igi@gentoo ~ $
  echo
  "`seq 3`" 1 2 3
주: seq 출력 은 줄 바 꿈 정 보 를 포함 하지만 echo ` seq 3 '는 줄 바 꿈 자 를 잃 어 버 렸 습 니 다. bash 는 해석 할 때' seq 3 '의 출력 결 과 는 3 개의 독립 된 문자 라 고 생각 하기 때 문 입 니 다. 해석 후 echo 1, 2, 3 과 같 습 니 다 (이 과정 에서 bash 는 많은 일 을 했 습 니 다. 관심 이 있 으 면 bash 해석 순 서 를 알 수 있 습 니 다).한편, echo 'seq 3' 일 때 bash 는 'seq 3' 의 출력 결 과 를 하나의 전체 로 취급 하기 때문에 출력 결 과 는 bash 에 의 해 분리 되 지 않 고 줄 바 꿈 자 를 유지 할 수 있 습 니 다.따라서 변수 나 명령 교체 의 완전한 정 보 를 보존 해 야 합 니 다. 특히 줄 바 꿈 자 를 사용 할 때 는 작은 따옴표 를 끼 워 보험 을 드 는 것 을 기억 하 세 요. 항상 작은 따옴표 를 붙 이 는 것 이 좋 은 습관 입 니 다."command"는 모두 $var, "command"보다 훨씬 안전 합 니 다. 많은 경우 에 앞의 것 이 야 말로 당신 이 원 하 는 결과 입 니 다. 당신 이 무엇 을 하고 있 는 지 알 지 않 으 면 쉽게 작은 따옴표 를 생략 하지 마 세 요.
3. 따옴표 가 항상 혼 란 스 러 운 따옴표 에는 다른 따옴표 가 포함 되 어 있 습 니 다. 작은 따옴표 와 작은 따옴표 의 문자 표현 을 이해 할 수만 있다 면 파악 하기 어렵 지 않 습 니 다.
1
2
3
4
5
6 igi@gentoo ~ $
  echo
  "abc\"abc" abc"abc igi@gentoo ~ $
  echo
  "abc\'abc" abc'abc igi@gentoo ~ $
  echo
  "abc\`abc" abc`abc
보다 시 피 따옴표 에 다른 따옴표 를 넣 는 것 은 쉽 습 니 다. 당신 은 역 슬 래 쉬\전의 로 추가 할 따옴표 (따옴표 에 작은 따옴표 를 넣 으 면 전의 하지 않 아 도 됩 니 다) 를 사용 해 야 합 니 다. 그러면 작은 따옴표 에 이렇게 간단 합 니까?
1
2
3
4 igi@gentoo ~ $
  echo
  'abc"abc' abc"abc igi@gentoo ~ $
  echo
  'abc`abc' abc`abc
여기까지 정말 간단 합 니 다. 작은 따옴표 에는 모두 일반 문자 이기 때문에 전의 가 전혀 필요 없습니다. 만약 에 역 슬 래 쉬\를 추가 하면 역 슬 래 쉬 는 여전히 자신 입 니 다. 직접 인쇄 합 니 다.
1
2 igi@gentoo ~ $
  echo
  'abc\"\`abc' abc\"\`abc
문제 가 생 겼 습 니 다. 작은 따옴표 에는 작은 따옴표 가 어떻게 포함 되 어 있 습 니까? 이 럴 때 는 역 슬 래 쉬\도 소 용이 없습니다. 작은 따옴표 만 직접 쓰 면 bash 는 따옴표 가 아직 끝나 지 않 았 다 고 생각 할 것 입 니 다. 좋 습 니 다. 불행 하 게 도 이런 문제 에 부 딪 히 면 해결 할 방법 이 있 습 니 다.
1
2
3
4
5
6 igi@gentoo ~ $
  echo
  $ 'abc\'abc' abc'abc igi@gentoo ~ $
  echo
  -e
  'abc\x27abc' abc'abc igi@gentoo ~ $
  echo
  'abc' \ '' abc' abc'abc
첫 번 째 방법 은 bash 특유 의 $'string' 사이 에서 역 슬 래 쉬 까지 모두 전의 문 자 를 사용 하 는 것 입 니 다. 두 번 째 방법 은 작은 따옴표 의 ASCII 코드 를 통 해 작은 따옴표 를 인쇄 하 는 것 입 니 다. 세 번 째 방법 은 명령 을 차단 하고 중간 에 작은 따옴표 를 삽입 하 는 것 입 니 다. 일반적으로 첫 번 째 방법 이 가장 우아 합 니 다.

좋은 웹페이지 즐겨찾기