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?

 1. The solution I can think of is: writing `command2` as a bash script
 and passing the script name in place of `command2` as an argument to
 `command1`. 
 
 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
 2. 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 by `curl ifconfig.me`, before running the
 program
 
 torify "curl ifconfig.me; myprogram -n myarg" 
 
 but it doesn't work.