: [arguments]
매개변수 확장 및 리디렉션 수행 외에는 아무것도 수행하지 않습니다.
파이프 또는 복합 명령은 어떻게 작동합니까 :
?
중괄호가 문제를 해결하지 못하는 것 같습니다.
$ : { echo hello | cat; }
bash: syntax error near unexpected token `}'
$ : { if test 1; then echo hello; fi; }
bash: syntax error near unexpected token `then'
큰따옴표는 일부 확장을 방지하므로 이를 :
허용합니다.
echo
대체를 사용할 때도 동일한 문제가 발생합니다 :
.
$ echo { echo hello | cat; }
bash: syntax error near unexpected token `}'
$ echo { if test 1; then echo hello; fi; }
bash: syntax error near unexpected token `then'
기본적으로 확장 및 리디렉션 명령을 실행 :
하고 이를 사용하여 결과를 확인하고 싶습니다 echo
. 인용문에는 파이프 및 제어 흐름 키워드가 작동하지 않는다는 언급이 없으므로 별칭 확장이 발생하지 않기를 바랍니다.
감사해요.
답변1
: { echo hello | cat; }
쉘은 명령줄을 구문 분석합니다. 먼저 첫 번째 명령의 끝을 찾으려고 시도합니다. 그 끝이 파이프입니다.
그래서 첫 번째 명령은
: { echo hello
아무것도 하지 않습니다. 특히 고양이에게는 아무것도 전송하지 않습니다. 그리고
: { echo hello | cat;
사라지고 왼쪽만 남는데 }
이는 유효한 명령이 아닙니다.
답변2
:
명령이므로 다른 명령처럼 파이프라인에서 사용할 수 있습니다.
something | :
: | something
something | : | something-else
...그러나 명령은 아무 작업도 수행하지 않으므로 아무 소용이 없습니다 :
. 입력을 받지 않고 출력도 생성하지 않습니다. 따라서 이들 중 어느 것도 매우 유용한 파이프가 아닙니다(약간 더 짧은 파이프라고 생각되는 두 번째 파이프를 제외하고 something </dev/null
).
예제 명령은 다음과 같습니다.
$ : { echo hello | cat; }
이는 셸에서 보고된 구문 오류처럼 보입니다. 이 { ... }
구조를 사용할 수 있습니다바꾸다간단한 명령이지만 어떻게든 결합되지 않는...(?). 이 복합 명령이 정확히 무엇을 하길 원하시나요? 어쩌면 달성하려는 목표에 대해 더 많은 세부 정보를 추가해야 할 수도 있습니다.