歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell參數問題,linux

shell參數問題,linux

日期:2017/2/27 14:29:03   编辑:SHELL編程
  有程序aaaa 參數為 --add "aa bb" 現需要將所有參數用變量代替程序如下: temp="--add "aa bb"" aaaa $temp 提示參數出錯bb" 手工執行aaaa --add "aa bb" 可以 需要這麼轉換??? to houf2000: 很明顯,你的程序aaaa需要兩個參數,一個是--add($1) 一個是aa bb ($2) 因為aa bb中間含空格,shell會解釋成兩個參數,所以加"" 而你使用替換的時候,shell對命令行的解釋工作便只作了變量替換,你的程序便獲得了 三個參數:--add($1) ,"aa ($2) ,bb"($3 個人認為,一個好的程序在考慮用戶輸入的時候,應該具體些. 比如說:考慮三個參數 或考慮使用特殊字符間隔兩個參數,如 aaaa --add aa#bb 非常感謝斑竹,可我的程序比較特殊,可能輸入多組參數:例如; aaaa --add "aa bb" --add "cc dd" --add "ff" 因為參數不確定,總需要得到一個參數字符串,而對這個串進行 操作時就會出現斑竹所說的認為多參數的情況,用“ 的目的就是這個, 沒有別的辦法在參數中帶有空格嗎?望指教 在參數間加空格是一個問題,而shell運行變量替代是另一個問題. 如果單純是加空格,用" " 和都可以. 而要讓shell做完變量替換在做一次對""和的處理便做不到了. 通常在其它情況下我們用eval,在這好像也不適用啊. 如果你有aaaa的源碼,還是把它改了吧.在c裡把#替換成空格不是很簡單麼?




Copyright © Linux教程網 All Rights Reserved