Como especificar um comando composto como um argumento para outro comando?

0

Suponha que command1 receba outro comando (digamos command2 ) como argumento, com os argumentos command2 como os argumentos restantes de comman1 , ou seja,

command1 command2 arg...

Quando command2 é composto de vários comandos (cada um dos quais pode ter seus próprios argumentos e opções), por exemplo, quando command2 é command 3; command 4 e command 3 | command 4 , como você especifica command2 como um argumento para command1 ?

Minha pergunta pertence a bash, command1 ou ambos?

  1. A solução que consigo pensar é: escrever command2 como um script bash e passando o nome do script no lugar de command2 como um argumento para %código%.

    Mas parece que não funciona no seguinte exemplo:

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

    em que o conteúdo de command1 é:

    #! /usr/bin/bash
    
    curl ifconfig.me 
    myprogram -n myarg
    
  2. Eu também gostaria de saber se é possível resolver o problema sem escrever um script, porque parece um exagero escrever um script quando /tmp/test-tor/download.sh é curto.

    Por exemplo, ao usar command2 com um programa, quero verificar meu endereço IP externo por tor , antes de executar o programa

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

    mas não funciona.

por Tim 10.04.2016 / 06:22

1 resposta

1

[Os links a seguir podem não ser a versão real que você tem, mas provavelmente são semelhantes o suficiente]. O comando torify é um script de shell , que apenas chama torsocks , que é outro script de shell que apenas faz exec .

Portanto, você deve ser capaz de fornecer vários comandos para torify da seguinte forma:

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

O problema que você tem com torify /tmp/test-tor/download.sh é provavelmente que o script que você escreveu deve começar com #!/bin/bash ; alguns sistemas não possuem /usr/bin/bash . Certifique-se de que você também chmod +x seu script.

    
por 10.04.2016 / 09:19

Tags