Linux

Bash:美元括號中的兩個命令沒有相同的行為

  • March 13, 2014

我不明白為什麼,在 Bash 中:

  • echo $(hostname --fqdn)作品,
  • echo $(id -un)沒有 ( id: –un: No such user)。

反引號給出相同的結果。

使用這種表示法有什麼好的做法嗎?id 命令以這種方式使用有什麼特別之處嗎?

下面,一些細節似乎適用於其他系統:

  • lsb_release -a: SUSE Linux Enterprise Server 11 (x86_64),
  • which id: /usr/bin/id,
  • id -un單獨工作。

我注意到發布的命令之間存在細微差別:

echo $(id -un)

及其錯誤消息:

id: –un: No such user

這兩個“連字元”是不同的,第二個有點長。看起來錯誤消息是從原始消息中複製和粘貼的,但命令是重新鍵入的。原始命令很可能包含錯誤類型的連字元。這解釋了為什麼沒有人可以重現錯誤消息。

這種錯誤主要有以下兩個原因之一:

  • 程式碼是從網站上複製的,在網站上使用了錯誤的格式化程序/語法熒光筆進行排版。
  • 程式碼是在不適當的編輯環境中輸入的,例如 Microsoft Word。Word 可能會將您鍵入的內容更改為更好的排版,但出乎意料的變體,例如不同的連字元、不同的引號或其他一些空格符號。

巧合的是,在Codegolf上只有一個人氣競賽挑戰,其中一個答案使用了類似的“技巧”來產生甚至不可見的差異:https ://codegolf.stackexchange.com/a/23258/16287

引用自:https://serverfault.com/questions/581739