Bash : 중괄호를 사용하여 그룹화 된 명령 앞에 리디렉션을 넣을 수없는 이유

yuanjianpeng

다음 쉘 명령 실행에 실패했습니다.

$ >/dev/null { : ; }
-bash: syntax error near unexpected token `}'

그러나 간단한 명령 앞에 리디렉션을 넣으면 괜찮습니다.

$ >/dev/null :

이것은 bash 매뉴얼에서 언급되지 않습니다.

카밀 쿡

중괄호를 사용하여 그룹화 된 명령 앞에 리디렉션을 넣을 수없는 이유

언어 문법이 그것을 허용하지 않기 때문입니다.

에서 POSIX 수동 쉘 에서를 2.4 Reserved words다음과 같은 중점 광산을 읽을 수 있습니다 :

다음 단어는 예약어로 인식됩니다.

! 에서 ESAC 할
{다음 완료 Fi 인터넷을
할 때까지에 대한} ELIF를
다른 동안 만약의 경우

이 인식은 인용 된 문자가없고 단어가 다음과 같이 사용되는 경우에만 발생합니다.

  • 명령의 첫 단어

  • case, for 또는 in을 제외한 예약어 중 하나 뒤에 오는 첫 번째 단어

  • case 명령의 세 번째 단어 (이 경우 in 만 유효 함)

  • for 명령의 세 번째 단어 (이 경우 in 및 do 만 유효 함)

들어 {그룹화 명령을 소개하는이 명령의 첫 번째 단어이어야한다. 예를 들어 </dev/null if false; them echo 1; fi또는 </dev/null while true; do echo 1; done. 예약어는 명령의 첫 번째 단어 여야합니다.

어떻게 할 수 있습니까?

중괄호 또는 명령 뒤에 넣습니다. 그룹화 "내부"모든 명령에 대한 리디렉션을 "적용"합니다.

{ echo 1; } >/dev/null
while echo this will go to file1; do echo this too; break; done >/tmp/file1.txt
if read a; then read b; echo yes; else echo no; fi </tmp/file1 >/tmp/file2

다음과 같이 : $ (Q) {xxx; }

명령 대체 $(...)가 확장 되기 전에 리디렉션이 구문 분석되기 때문에 이렇게하는 것은 불가능합니다 . 이렇게 스크립팅 할 수 없습니다. eval을 사용하여 식을 재평가 할 수 있지만 eval은 evil에서 온 문자입니다 . 검색하는 올바른 방법은 execlike exec 1>/dev/null또는 like를 사용하여 stdout 또는 사용자 정의 파일 설명자를 대상 파일로 리디렉션하는 exec {FD}>/dev/null; { cmd; } >${FD}입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

괄호 안에 bash 명령을 사용하여 stdout을 파일로 리디렉션

분류에서Dev

스크립트의 변수에 stderr 리디렉션을 사용하여 파이프 된 명령의 출력을 할당 할 때 csh (tcsh) 모호한 출력 리디렉션

분류에서Dev

스크립트의 변수에 stderr 리디렉션을 사용하여 파이프 된 명령의 출력을 할당 할 때 csh (tcsh) 모호한 출력 리디렉션

분류에서Dev

쉘 명령을 사용하여 중괄호 사이에 여러 줄을 그립니다.

분류에서Dev

heredocs를 사용하여 bash 명령을 터미널에 복사 / 붙여 넣기 할 때 이상한 동작

분류에서Dev

파일 또는 디렉토리를 찾을 수 없지만 bash 명령에 언급 된 파일 또는 디렉토리가 없습니까?

분류에서Dev

bash 명령을 사용하여 한 위치에서 다른 위치로 디렉토리 세트를 이동하는 방법

분류에서Dev

시계의 호출에 여러 티 명령 리디렉션을 사용하여

분류에서Dev

bash : gnome-terminal 탭을 여는 동안`bash -c` 명령에서 ~ / .bashrc 파일에 정의 된 함수를 호출 할 때 "명령을 찾을 수 없음"

분류에서Dev

bash : gnome-terminal 탭을 여는 동안`bash -c` 명령에서 ~ / .bashrc 파일에 정의 된 함수를 호출 할 때 "명령을 찾을 수 없음"

분류에서Dev

bash : gnome-terminal 탭을 여는 동안`bash -c` 명령에서 ~ / .bashrc 파일에 정의 된 함수를 호출 할 때 "명령을 찾을 수 없음"

분류에서Dev

명령 터미널을 사용하여 홈 디렉토리의 디렉토리에 액세스 할 수없는 이유는 무엇입니까?

분류에서Dev

Python에서 os.execvp ()를 사용하여 명령 출력을 리디렉션하는 방법

분류에서Dev

nullglob이있는 대괄호를 포함하여 bash 변수 내에서 명령을 실행할 수 없습니다.

분류에서Dev

rename 명령을 사용하여 여러 디렉토리의 이름을 바꾸십시오. 이름에는 괄호가 포함됩니다.

분류에서Dev

FTP를 사용하여 웹 사이트 디렉토리에 파일을 보내는 cURL 명령 줄

분류에서Dev

웹 사이트에 로그인하고 C #을 사용하여 리디렉션 된 URL 콘텐츠를 얻는 방법

분류에서Dev

웹 사이트에 로그인하고 C #을 사용하여 리디렉션 된 URL 콘텐츠를 얻는 방법

분류에서Dev

유닉스 명령을 실행하여 C #에서 SharpSSH를 사용하여 디렉토리로 이동

분류에서Dev

한 명령에서 출력 된 경로 이름을 "cd"로 리디렉션 할 수없는 이유는 무엇입니까?

분류에서Dev

Tosca throwing을 사용하는 자동화 된 데이터 기반 테스트 사례-명령 'XL'에 적합한 값을 찾을 수없는 이유

분류에서Dev

.htaccess를 사용하여 OpenCart에서 찾을 수없는 404 페이지를 리디렉션하는 방법

분류에서Dev

Bash에서 이중 대괄호로 명령을 실행하는 데 작동하지 않습니다.

분류에서Dev

여러 줄 bash 명령을 변수로 리디렉션하는 방법

분류에서Dev

OS X 명령 줄 응용 프로그램이 Java에서 호출되는 동안 디렉토리를 찾을 수 없습니다.

분류에서Dev

블록의 주소 뒤에 sed 명령을 그룹화 할 수없는 이유는 무엇입니까?

분류에서Dev

bash / awk 명령을 변수에 넣는 방법 (명령 출력이 아님)

분류에서Dev

다른 리디렉션 방법을 사용하여 명령 실행 기간에 차이가있는 이유는 무엇입니까?

분류에서Dev

그룹화 된 데이터의 명명 된 열을 사용하여 MySQL Group by

Related 관련 기사

  1. 1

    괄호 안에 bash 명령을 사용하여 stdout을 파일로 리디렉션

  2. 2

    스크립트의 변수에 stderr 리디렉션을 사용하여 파이프 된 명령의 출력을 할당 할 때 csh (tcsh) 모호한 출력 리디렉션

  3. 3

    스크립트의 변수에 stderr 리디렉션을 사용하여 파이프 된 명령의 출력을 할당 할 때 csh (tcsh) 모호한 출력 리디렉션

  4. 4

    쉘 명령을 사용하여 중괄호 사이에 여러 줄을 그립니다.

  5. 5

    heredocs를 사용하여 bash 명령을 터미널에 복사 / 붙여 넣기 할 때 이상한 동작

  6. 6

    파일 또는 디렉토리를 찾을 수 없지만 bash 명령에 언급 된 파일 또는 디렉토리가 없습니까?

  7. 7

    bash 명령을 사용하여 한 위치에서 다른 위치로 디렉토리 세트를 이동하는 방법

  8. 8

    시계의 호출에 여러 티 명령 리디렉션을 사용하여

  9. 9

    bash : gnome-terminal 탭을 여는 동안`bash -c` 명령에서 ~ / .bashrc 파일에 정의 된 함수를 호출 할 때 "명령을 찾을 수 없음"

  10. 10

    bash : gnome-terminal 탭을 여는 동안`bash -c` 명령에서 ~ / .bashrc 파일에 정의 된 함수를 호출 할 때 "명령을 찾을 수 없음"

  11. 11

    bash : gnome-terminal 탭을 여는 동안`bash -c` 명령에서 ~ / .bashrc 파일에 정의 된 함수를 호출 할 때 "명령을 찾을 수 없음"

  12. 12

    명령 터미널을 사용하여 홈 디렉토리의 디렉토리에 액세스 할 수없는 이유는 무엇입니까?

  13. 13

    Python에서 os.execvp ()를 사용하여 명령 출력을 리디렉션하는 방법

  14. 14

    nullglob이있는 대괄호를 포함하여 bash 변수 내에서 명령을 실행할 수 없습니다.

  15. 15

    rename 명령을 사용하여 여러 디렉토리의 이름을 바꾸십시오. 이름에는 괄호가 포함됩니다.

  16. 16

    FTP를 사용하여 웹 사이트 디렉토리에 파일을 보내는 cURL 명령 줄

  17. 17

    웹 사이트에 로그인하고 C #을 사용하여 리디렉션 된 URL 콘텐츠를 얻는 방법

  18. 18

    웹 사이트에 로그인하고 C #을 사용하여 리디렉션 된 URL 콘텐츠를 얻는 방법

  19. 19

    유닉스 명령을 실행하여 C #에서 SharpSSH를 사용하여 디렉토리로 이동

  20. 20

    한 명령에서 출력 된 경로 이름을 "cd"로 리디렉션 할 수없는 이유는 무엇입니까?

  21. 21

    Tosca throwing을 사용하는 자동화 된 데이터 기반 테스트 사례-명령 'XL'에 적합한 값을 찾을 수없는 이유

  22. 22

    .htaccess를 사용하여 OpenCart에서 찾을 수없는 404 페이지를 리디렉션하는 방법

  23. 23

    Bash에서 이중 대괄호로 명령을 실행하는 데 작동하지 않습니다.

  24. 24

    여러 줄 bash 명령을 변수로 리디렉션하는 방법

  25. 25

    OS X 명령 줄 응용 프로그램이 Java에서 호출되는 동안 디렉토리를 찾을 수 없습니다.

  26. 26

    블록의 주소 뒤에 sed 명령을 그룹화 할 수없는 이유는 무엇입니까?

  27. 27

    bash / awk 명령을 변수에 넣는 방법 (명령 출력이 아님)

  28. 28

    다른 리디렉션 방법을 사용하여 명령 실행 기간에 차이가있는 이유는 무엇입니까?

  29. 29

    그룹화 된 데이터의 명명 된 열을 사용하여 MySQL Group by

뜨겁다태그

보관