--param=value 和 --param=value 有什麼差別?

--param=value 和 --param=value 有什麼差別?

過去我讀過(不記得來源):

./script --param="value"

與以下內容相比,可能會產生不同的結果:

./script "--param=value"

由於這些差異(在切換系統/作業系統/發行版/shell 時可能會變得明顯),您應該始終這樣做--param="value"。也就是說,執行我所說的「後期引用」(將引用放在尾隨部分或最小子集周圍;不要引用整個內容)。

我也看到人們在修改變數時這樣做(即PATH=/bar:"$PATH",與 相比PATH="/bar:$PATH")。總的來說,我想說,從我所看到的其他人的做法來看,「遲到引用」比引用整個內容更常見。

--param="value"我的問題是:和之間真的有潛在差異嗎"--param=value"?如果我需要引用某些內容,僅引用部分內容和引用整個內容之間真的有區別嗎?

我傾向於這樣做--param="value"而不是"--param=value",但我這樣做主要是因為我認為它更容易在心理上解析,而不是因為我意識到任何技術差異。

答案1

至少在您提到的特定情況下沒有區別。 shell會去掉"字符,最終結果是一樣的。為了調試 shell 引用問題,我有時會使用一個簡單的程序,只列印出它的 argv。例如,

$ printargs --param="value"
argv[0] = printargs
argv[1] = --param=value

$ printargs "--param=value"
argv[0] = printargs
argv[1] = --param=value

這是程式碼,供參考:

#include <stdio.h>

int main(int argc, char** argv)
{
    int i;
    for (i = 0; i < argc; ++i) {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    return 0;
}

相關內容