来自 Bash 手册
Run Code Online (Sandbox Code Playgroud)bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument ...]
-c处理选项后从第一个非选项参数读取并执行命令,然后退出。任何剩余的参数都分配给位置参数,从$0.
是-c它接受一个选项参数或不带任何选项参数的选项?我想它需要一个选项参数。
为什么它说-c“从第一个非选项参数”而不是“从选项参数到
-c”读取和执行命令?
例如,在以下命令中,是mycommandoption -cof的选项参数bash,还是 ? 的非选项参数bash?
bash -c mycommand
Run Code Online (Sandbox Code Playgroud)“任何剩余参数”是否意味着所有非选项参数
bash?
在以下命令中,将非选项参数arg1和arg2tobash传递bash给
mycommand并用作命令行参数是否正确mycommand?
bash -c mycommand arg1 arg2
Run Code Online (Sandbox Code Playgroud)
以下两个命令是否等效?它们之间有什么区别?
bash -c mycommand arg1 arg2
bash -c 'mycommand arg1 arg2'
Run Code Online (Sandbox Code Playgroud)谢谢。
为什么它说
-c“从第一个非选项参数”而不是“从选项参数到-c”读取和执行命令?例如,在
Run Code Online (Sandbox Code Playgroud)bash -c mycommandmycommand' 是 bash 选项 -c 的选项参数,还是 bash 的非选项参数?
它是 的非选项参数bash,您可以通过在它们之间添加更多选项来简单地看到:
bash -c -i 'echo 1'
Run Code Online (Sandbox Code Playgroud)
在
Run Code Online (Sandbox Code Playgroud)bash -c mycommand arg1 arg2bash 将非选项参数 arg1 和 arg2 传递给 mycommand 并用作 mycommand 的命令行参数是否正确?
不。再试一次:
bash -c echo arg1 arg2
Run Code Online (Sandbox Code Playgroud)
以下两个命令是否等效?它们之间有什么区别?
Run Code Online (Sandbox Code Playgroud)bash -c mycommand arg1 arg2 bash -c 'mycommand arg1 arg2'
它们不是等价的。一,mycommand arg1 arg2跑。在另一个中,mycommand运行,Bash 称自己为arg1,并且$1是arg2。
所有这些似乎都可以从轻微的实验中受益。