linux shell bash使用管道|和read結合時問題解決
阿新 • • 發佈:2019-01-27
最近在將ksh轉成bash執行的時候出現了問題。程式碼如下:
echo $1 | sed 's/\..*$/''/' | read FILE_NAME
當使用ksh執行的時候沒有問題,FILE_NAME能獲取到正確的值。但當使用bash執行時,FILE_NAME值為空。
找了半天也不知道什麼原因,最後找到了一種解決方法。程式碼如下:
read FILE_NAME <<< ` echo $1 | sed 's/\..*$/''/' `
上面的程式碼有兩點需要注意:
①使用了 <<< ,這個叫“here string",中文不知道叫什麼,具體用法可以參考:http://www.360doc.com/content/10/0303/18/155970_17452864.shtml
②<<<之後的程式碼使用了反單引號括了起來,否則執行會報錯。
參考:http://bbs.chinaunix.net/thread-1821214-1-1.html
linux中檢視現在使用的shell是ksh還是bash?以及怎樣修改?
檢視系統支援的shell: cat /etc/shells
檢視現在使用的shell:
修改預設shell:
具體解釋清參考:http://blog.chinaunix.net/uid-20722281-id-160012.html
另外,修改了系統預設shell之後不會立即生效,之後再次登入系統修改的shell才會生效。