如何指定复合命令作为另一个命令的参数?

如何指定复合命令作为另一个命令的参数?

假设command1采用另一个命令(例如command2)作为参数,command2其中 的参数作为 的剩余参数comman1,即

command1 command2 arg...

Whencommand2是 由多个命令组成(每个命令可能有自己的参数和选项),例如,当command2iscommand 3; command 4和 时command 3 | command 4,如何指定command2为 的参数command1

我的问题属于 bashcommand1或两者?

  1. 我能想到的解决方案是:编写command2为 bash 脚本并将脚本名称作为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 很短的情况下编写脚本似乎有些过分了。

    例如,当tor与程序一起使用时,我想curl ifconfig.me在运行程序之前通过 ,检查我的外部IP地址

    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也有你的脚本。

相关内容