在使用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 关注
- 796 浏览
添加回答
举报
0/150
提交
取消