我想讓字符串中有空白的地方被計爲整個字符串,而不是被解析。這是我想有什麼情況:計算KSH中參數的空白?
$ ksh program.ksh "what up"
File 'what up' not found.
而這就是我得到:
$ ksh program.ksh "what up"
File 'what' not found.
File 'up' not found.
這是我試圖使代碼工作:
wflag=false
cflag=false
while getopts "cw" opt; do
case "$opt" in
c)
cflag=true
;;
w)
wflag=true
;;
/?)
;;
esac
done
問題在於:1)我嘗試上面的內容,如ksh program.ksh "what up"
; 2)當我嘗試類似ksh program.ksh "-w -c"
時。第二個是最令人困惑的,因爲當我打印出wflag
和cflag
他們都是真實的。 "-w -c"
不應該被當作字符串嗎?看起來好像內核(它是內核在這裏做的工作?)正在解析這個,儘管那正是我不想要的;我希望它被視爲一個帶有空格的字符串。我已經通過WordSplitting和((論文中的論點,雖然不會讓我發佈))和認爲我明白了。很明顯,我必須錯過一些東西,或者畢竟沒有真正理解它:P
我的直覺告訴我,getopts
會自動消除任何空白。我試過$(opt)
而不是"$opt"
,以及花括號和/或單引號(我很確定單引號不是什麼會工作,雖然)。唉,沒有雪茄。
任何幫助將不勝感激,並感謝您通過閱讀這段文字。
非常感謝您提供瞭如此明確且有幫助的回覆。不幸的是,`getopts`不支持長期選項,我想我可能需要找到另一種方法來實現這一點。我會嘗試將所有參數存儲到一個數組中,然後逐個處理它們。再次感謝您的幫助! – Fred 2011-01-28 19:03:53