带有空格的C程序命令行参数

时间:2016-04-20 13:23:01

标签: python c

我的python程序program.py打印带空格的文本,而我的C程序a.out只期望一个命令行参数。为什么这两种方法之间存在不同的行为...即为什么方法1工作而不是方法2?

方法1:

# program.py
print("Hello world")

终端:

> ./a.out "$(python program.py)"
// Program successfully run

方法2:

# program.py
print("\"Hello world \"")

终端:

> ./a.out $(python program.py)
// Error- only one command line argument expected

2 个答案:

答案 0 :(得分:0)

  

方法1:

     

./a.out "$(python program.py)"   

./ a.out将使用“$(python program.py)”作为字符串
echo "$(python program.py)" prints "$(python program.py)"

  

方法2:

     

./a.out $(python program.py)

./ a.out将使用$(python program.py)的结果作为参数。
echo $(python program.py) 将运行程序,打印的内容将用作参数。

因为你打印了Hello world,所以它将使用Hello作为第一个参数,将world作为第二个参数。 它会产生类似的东西 ./a.out Hello World

答案 1 :(得分:0)

显然,每当你使用$ something时,如果你有空格,它将总是分成几个参数。 只要看看1美元是如何运作的,它就是同样的行为。 然后你的$(命令)将工作相同。 这就是为什么你必须在它周围加上引号。

我试过了:

ls $(echo '"Hello World!"')

它与第二种方法具有相同的行为。

而且:

ls "$(echo 'Hello World!')"

与第一种方法相同。