복합 명령을 다른 명령의 인수로 지정하는 방법은 무엇입니까?

복합 명령을 다른 명령의 인수로 지정하는 방법은 무엇입니까?

command1다른 명령(예: command2)을 인수로 취하고 command2해당 인수를 나머지 인수로 사용한다고 가정합니다 comman1.

command1 command2 arg...

command2가 여러 명령으로 구성되는 경우 (각 명령에는 자체 매개변수와 옵션이 있을 수 있음), 예를 들어 가 이고 이면 ? 에 대한 매개변수를 지정하는 방법은 무엇 command2입니까 ?command 3; command 4command 3 | command 4command2command1

내 문제는 bash에 속합니까 command1, 아니면 둘 다에 속합니까?

  1. 내가 생각할 수 있는 해결책은 command2bash 스크립트로 작성하고 command2스크립트 이름을 command1.

    하지만 아래 예에서는 작동하지 않는 것 같습니다.

    $ torify /tmp/test-tor/download.sh
    /usr/bin/torsocks: 162: exec: /tmp/test-tor/download.sh: not found
    

    내용은 /tmp/test-tor/download.sh다음과 같습니다:

    #! /usr/bin/bash
    
    curl ifconfig.me 
    myprogram -n myarg
    
  2. command2 또한 매우 짧은 경우에 스크립트를 작성하는 것은 지나친 것처럼 보이기 때문에 스크립트를 작성하지 않고도 문제를 해결할 수 있는지 알고 싶습니다 .

    예를 들어 프로그램과 함께 사용할 때 내 외부 IP 주소를 확인하고 tor싶습니다.curl ifconfig.me

    torify "curl ifconfig.me; myprogram -n myarg" 
    

    하지만 작동하지 않습니다.

답변1

[아래 링크는 실제 버전이 아닐 수도 있지만 충분히 유사할 수 있습니다.] 명령 torify쉘 스크립트, 그냥 torsocks다른 사람을 호출하는 것뿐이에요쉘 스크립트그게 다야 exec.

따라서 다음과 같은 여러 명령을 제공할 수 있어야 합니다 torify.

torify sh -c 'curl ifconfig.me; myprogram -n myarg'

당신이 겪고 있는 문제 torify /tmp/test-tor/download.sh는 아마도 당신이 작성하고 있는 스크립트가 #!/bin/bash;로 시작해야 한다는 것입니다. 일부 시스템에는 그렇지 않습니다 . 거기에도 스크립트가 있는지 /usr/bin/bash확인하십시오 .chmod +x

관련 정보