Linux
Bash:美元括號中的兩個命令沒有相同的行為
我不明白為什麼,在 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