为了账号安全,请及时绑定邮箱和手机立即绑定

linux 中 read命令的字符读取问题

linux 中 read命令的字符读取问题

达令说 2018-09-24 10:25:52
在使用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进行拆分。

查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 796 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信