Suppose command1
takes another command (say command2
) as argument, with command2
's arguments as the remaining arguments of comman1
, i.e.
command1 command2 arg...
When command2
is a made up of several commands (each of which might have its own arguments and options), e.g. when command2
is command 3; command 4
and command 3 | command 4
, how do you specify command2
as an argument to command1
?
Does my question belong to bash, command1
, or both?
The solution I can think of is: writing
command2
as a bash script and passing the script name in place ofcommand2
as an argument tocommand1
.But it seems not work in the following example:
$ torify /tmp/test-tor/download.sh /usr/bin/torsocks: 162: exec: /tmp/test-tor/download.sh: not found
where the content of
/tmp/test-tor/download.sh
is:#! /usr/bin/bash curl ifconfig.me myprogram -n myarg
I also would like to know if it is possible to solve the problem without writing a script, because it seems overkill to write a script when
command2
is short.For example, when using
tor
with a program, I want to check my external ip address bycurl ifconfig.me
, before running the programtorify "curl ifconfig.me; myprogram -n myarg"
but it doesn't work.
torify
is a wrappter oftorsocks
, which is in turn a wrapper oftor
. – Tim Apr 10 '16 at 04:55