1. 程式人生 > >linux shell bash使用管道|和read結合時問題解決

linux shell bash使用管道|和read結合時問題解決

最近在將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才會生效。