결합된 명령을 인수로 전달

결합된 명령을 인수로 전달

스크립트를 고려해보세요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의 파이프라이닝 기능이 대부분의 실제 응용 프로그램을 다루는 것처럼 보이기 때문에 그러한 스크립트나 함수는 실제로 사용되지 않습니다.

관련 정보