如何将参数传递给/ bin / bash?

时间:2014-04-12 02:21:51

标签: bash cocoa unix terminal nstask

在我的终端,我做 $ myprogram myfile.ext

我希望能够通过命令/bin/bash执行相同操作,但它无效。

我试过

$ /bin/bash -c -l myprogram myfile.ext

但它不起作用。似乎my program已启动,但没有file.ext作为选项(作为输入文件)

有没有人知道如何做到这一点?


为什么我问这个问题

我希望通过myprogram在我正在为NSTask编写的程序中使用OSX框架启动cocoa。如果我只是要求NSTask启动我的程序,似乎缺少一些variable environment。所以,我尝试的是启动一个shell并在这个shell中启动myprogram

2 个答案:

答案 0 :(得分:3)

完全放弃-c。从联机帮助页:

bash [options] [file]
…
Bash  is  an  sh-compatible command language interpreter that executes commands read from the standard input or from a file.

因此,您可以通过

执行您的程序
bash myprogram myfile.ext

myfile.ext将是第一个位置参数。

bash -l myprogram myfile.ext

也可以正常工作,(但无论是否作为登录shell调用bash似乎与此问题相关。)

答案 1 :(得分:1)

-c string 
    If  the  -c  option  is  present, then commands are read from
    string.  If there are arguments after the  string,  they  are
    assigned to the positional parameters, starting with $0.

你需要引用以字符串形式传入的命令,因此它被视为-c选项的单个参数,然后通过命令后面的参数正常执行,即

/bin/bash -c -l 'myprogram myfile.ext'