在我的终端,我做
$ 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
。
答案 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'