스크립트를 고려해보세요pass_command
ls | "$@"
명명된 명령을 인수로 받아들입니다.
pass_command sort
#prints files sorted
모든 실제적인 목적을 위해서는 이것으로 충분합니다. 그런데 궁금해요. 복합 명령을 전달할 수 있는 메커니즘이 있나요? 그것은 마치
pass_command (sort | uniq) #Forgive the silly example.
편집: 더 복잡한 예에서 이 질문이 발생했습니다.
until who | grep mary
do
sleep 60
until
Mary에게 로그인하라고 신호를 보냅니다. 나는 특정 사건을 보여주기 위해 이것을 요약하고 싶습니다. 직관적인 아이디어는 다음과 같습니다.
#watchfor
until "$@"
do
sleep 60
done
그럼 전화하면 돼
watchfor (who | grep mary)
이것이 내 생각이다. 매개변수에 이름을 지정하면 위의 방법이 제대로 작동합니다. 이것은 나에게 이것에 대해 생각하게 만들었습니다.
나는 신호 명령을 숨기는 가장 관용적인 방법을 이해하려고 노력하고 있는 것 같습니다.
답변1
eval
스크립트에서 단순한 명령 이상의 것을 사용해야 합니다 $@
(스크립트의 매개변수는 따옴표 붙은 문자열로 전달되어야 함).
ls | eval "$@"
하지만 다시 말하지만, 이것도 관련이 있습니다
pass_command sort | uniq
즉, 명령을 전달하고 출력에 사용합니다 sort
.uniq
Unix의 파이프라이닝 기능이 대부분의 실제 응용 프로그램을 다루는 것처럼 보이기 때문에 그러한 스크립트나 함수는 실제로 사용되지 않습니다.