2012-10-23 201 views
0

把「@」放在什麼地方(比如包含Java運行命令的類路徑條目的文件的路徑)之前會產生什麼影響?命令行中的「@」是什麼意思?

我知道這與文件內容有關,但您可以想象在Google上搜索它有點困難。我找不到一個可以談論它的聯機幫助頁。

+0

我認爲這意味着'讀取由這個名字提名的文件(命名文件中的每一行代表一個條目)''而不是'這是條目'。 –

+0

這些標籤表明您在談論unix shell,文本顯示爲java。請澄清。請提供一個例子,即使它很混亂。 – Marian

+0

@Marian看起來他想要從命令行運行java程序,並且在該程序的參數中有「@」字符。 – Kamil

回答

1

它可能意味着不同的程序在不同的事情。作爲命令行上的慣例@file可以解釋爲:

從文件中讀取命令行選項。讀取的選項插入原始@file選項的 位置。如果文件不存在,或者不能讀取 ,那麼該選項將被逐字處理,而不會被刪除。 文件中的選項由空格分隔。通過圍繞 中的整個選項(單引號或雙引號),空白字符 可以包含在選項中。任何字符(包括反斜槓) 都可以包含在字符前加上 反斜槓。該文件本身可能包含其他@file選項;任何 這樣的選項將被遞歸處理。 from ld docs for @file

1

@字符在Unix命令行上沒有一般含義。它有一些受歡迎的實用程序使用。以@開頭的命令Makefile告訴make在執行該命令之前不要回顯該行。 GNU Autoconf將替換@-包含的變量,例如@[email protected],其替代項由configure發現。

+0

哦,這取決於你正在使用的外殼? –

+0

你似乎描述的根本不是貝殼的東西。 – user4815162342

+0

那麼它在java運行的情況下會來自哪裏呢?我懷疑它來自java二進制文件。 –

1

Bash Reference Manual

shell對幾個參數進行特別處理。這些參數可能只有 被引用;不允許分配給他們。

(...)

@

展開爲位置參數,從1開始。當在雙引號內出現 擴展時,每個參數將擴展爲一個單獨的單詞 。也就是說,「$ @」相當於「$ 1」「$ 2」...。如果 雙引號擴展出現在單詞中,則將 第一個參數的擴展連接到原始單詞 的開頭部分,並將最後一個參數的擴展連接到原始單詞的最後一個 部分。當沒有位置參數時, 「$ @」和$ @展開爲空(即,它們被移除)。

(...)

可以在參數中使用@(at符號)的任何程序,而不逃逸。

如果您必須在參數中傳遞類似[email protected]的內容,您只需要轉義$(美元符號)。

+0

我也見過@ $ someVar。這完全無關嗎? –

+0

不知道。無論如何,你可以在腳本/命令中使用它。它不需要轉義。 – Kamil

相關問題