我有兩個相同的Ubuntu 12.04 LTS系統。今天,在其中一個Ubuntu系統上,shell腳本失敗了,儘管它已經有多年沒有修改過了,並且在幾個小時前就開始工作了。我能夠縮小到這個錯誤:沒有理由的shell腳本問題
string='question mark: ?'
echo $string
question mark: n t
string='question mark: ?'
echo "$string"
question mark: ?
在shell腳本失敗的系統上,'?'在省略引號時用'n t'代替。這是其他相同系統上的相同測試的結果:
string='question mark: ?'
echo $string
question mark: ?
string='question mark: ?'
echo "$string"
question mark: ?
在這個系統中的問號被正確打印,不管引號省略或不。
shell腳本多年來一直未被修改,系統也沒有以任何方式升級或修改。 shell腳本幾個小時前工作,但突然失敗,因爲'?'轉換爲'n t',原因不明。
因爲這個,我瘋了,所以我真的很希望有人知道爲什麼會發生這種情況。
謝謝。
我不能夠感謝你。這是問題的原因。幾個小時前,我在我的主目錄中創建了兩個名爲'n'和't'的文件夾。現在是我閱讀特殊字符以避免將來出現這些問題的時候了。 – user3611207
一般來說,你應該引用任何使用雙引號的shell變量,就是這樣。只有在極少數情況下,如果你想要像你偶然發現的效果那樣,就把引號留下;我通常會對這些案例發表評論,以解釋爲什麼這些報價一度被廢除。 – Alfe