簡體   English   中英

Bash 用等號引用 Subshell 命令選項

[英]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都沒有真正看到任何引號;它只看到兩個字符串--optionasd asd asd asd或單個字符串 --option = --option=asd asd asd asd 。當需要。)

暫無
暫無

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

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