在使用read時(shí)候 碰到以下問題,與所想不一致,代碼及結(jié)果如下#!/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="我預(yù)期的結(jié)果應(yīng)該是var1== var2=123=bar1== bar2=123=但實(shí)際的結(jié)果是這樣var1=123= var2==bar1== bar2=123=我的疑問,對(duì)于第一個(gè)測(cè)試?yán)觼碇v,我既然指定了IFS的分隔符為' '空格,那么 var1為什么不是空呢。
1 回答

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