[英]Bash Quoting Subshell Command Option With Equal Sign
為什么是這樣
function wtf()
{
args="$*"
set -o xtrace
$(some_prog --option="$args") # note the '='
set +o xtrace
}
$ wtf asd asd asd asd
++ some_prog '--option=asd asd asd asd'
不一樣
function wtf2()
{
args="$*"
set -o xtrace
$(some_prog --option "$args") # note no '='
set +o xtrace
}
$ wtf2 asd asd asd asd
++ some_prog --option 'asd asd asd asd'
我相信我與Simple Command Expansion的第 4 項發生沖突,但我不確定......
作為參考,我希望后者的行為使$args
引號引起來。 但是我希望能夠使用等號,而且我不明白為什么$args
的初始'
引用被傳播到整個--option=
。
如果單詞中的任何字符需要轉義, -x
的 output 將引用整個單詞。 這就是為什么你看到
'--option=asd asd asd asd'
代替
--option='asd asd asd asd'
在第一種情況下。
在第二種情況下,選項及其參數作為兩個不同的詞提供。 由於--option
中沒有任何內容需要引用,因此不引用。
就some_prog
而言,結果是相同的。 它將使用--option
的單詞或--option=...
中=
后面的字符串作為名為option
的選項的參數。
(在這兩種情況下, some_prog
都沒有真正看到任何引號;它只看到兩個字符串--option
和asd asd asd asd
或單個字符串 --option =
--option=asd asd asd asd
。當需要。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.