在使用read時候 碰到以下問題,與所想不一致,代碼及結果如下#!/bin/bashIFS=' ' read -d '-' var1 var2 <<< " 123 -"printf "%s\n" "var1=$var1= var2=$var2="IFS='|' read -d '-' bar1 bar2 <<< "|123|-"printf "%s\n" "bar1=$bar1= bar2=$bar2="我預期的結果應該是var1== var2=123=bar1== bar2=123=但實際的結果是這樣var1=123= var2==bar1== bar2=123=我的疑問,對于第一個測試例子來講,我既然指定了IFS的分隔符為' '空格,那么 var1為什么不是空呢。
1 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
read
命令天生就是以空格為分隔符的,在這里你指定和不指定IFS=' '
效果是一樣的。并且read
天生就是要切掉一行的開頭和結尾的空格,這個特性也是無法改變的。而唯一不讓read
切掉開頭和結尾空格的作法是指定一個空IFS
,如IFS=''
,但是這樣一來,字符串中間的空格也不再被當作分隔符了。所以唯一的作法是把字符串中的空格替換成其它非空格的字符如逗號等等,然后再用IFS
進行拆分。
- 1 回答
- 0 關注
- 830 瀏覽
添加回答
舉報
0/150
提交
取消