簡體   English   中英

帶空格的C程序命令行參數

[英]C program command line argument with spaces

我的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

方法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

顯然,每當您使用$ something時,如果其中有空格,它將始終分為多個參數。 看看$ 1的工作原理,它是相同的行為。 然后,您的$(command)將起作用。 這就是為什么您必須在引號周圍加上引號。

我試過了:

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

它的行為與第二種方法相同。

和這個:

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

與您的第一種方法相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM