Bash
迴聲987654321098765432109876543210顯示 1 4 5 6 … 為什麼?
請解釋為什麼最後四個 echo 語句顯示 1 4 5 6?我曾經偶然碰到過這個,但我現在很好奇為什麼會發生這種行為。
這些陳述按預期工作(對我來說)。
$ echo [ 9876543210 ] [ 9876543210 ] $ echo [237890] [237890]
這些 echo 語句始終顯示 1 4 5 6。這些數字有什麼特別之處嗎?
$ echo [9876543210] 1 4 5 6 $ echo [abcd9876543210ghi] 1 4 5 6 $ echo [-123456-] 1 4 5 6 $ echo [-7654321-] 1 4 5 6
謝謝!
- 可能的重複是相關且有用的,但不是重複的。可能的重複是從
rm
命令的角度來看的。這個問題是從echo
命令的感知“奇怪行為”的角度來看的。兩者的基本答案都是萬用字元。使用命令搜尋問題的echo
人不會輕易找到rm
問題,但更有可能在這裡找到問題。
左括號
[
是 shell 的特殊字元;它打開了一個模式匹配算法,說“匹配括號內的任何字元”。因為您在目前目錄中有 4 個文件,分別命名為:1、4、5 和 6,所以當括號內的字元包含這些數字中的任何一個時,您的 shell 會將模式匹配替換為這些文件名。相反,當您使用echo [ 9876543210 ]
3 個參數呼叫 echo 時:[
、9876543210
和]
.您應該引用 echo 語句的參數,以防止 shell 將其視為模式匹配請求。
$ echo '[9876543210]' [9876543210]
(或刪除名為 1、4、5 和 6 的文件——但這是展示行為的解決方法,而不是修復)。