【发布时间】:2016-04-20 13:23:00
【问题描述】:
我的 python 程序 program.py 打印带有空格的文本,而我的 C 程序 a.out 只需要一个命令行参数。为什么这两种方法之间存在不同的行为...即为什么方法 1 有效而不是方法 2?
方法一:
# program.py
print("Hello world")
终端:
> ./a.out "$(python program.py)"
// Program successfully run
方法二:
# program.py
print("\"Hello world \"")
终端:
> ./a.out $(python program.py)
// Error- only one command line argument expected
【问题讨论】:
-
...因为您的命令行 shell 将
$和(和)解释为命令的一部分,而不是单个字符串参数的一部分。像你第一次那样在命令行参数周围使用"是正确的。 -
非常有趣。在第二种情况下,您将获得第一个 agument
"Hello和第二个world "。在重新解析$()的结果时,bash 似乎忽略了引号和转义字符。