[英]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.