複合コマンドを他のコマンドの引数として指定するには?

複合コマンドを他のコマンドの引数として指定するには?

command1他のコマンド(例command2:)を引数として取り、command2その引数を残りの引数として使用するとしますcomman1

command1 command2 arg...

command2が複数のコマンドで構成されている場合(各コマンドには独自のパラメータとオプションがある場合があります)、のパラメータを指定する方法はcommand2command 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

関連情報