从文件打印IFS值

时间:2015-08-31 05:40:16

标签: linux shell parsing ksh

脚本:

#!/bin/ksh
FILENAME=$1

while read RECORD VALUE
do      
    echo  ${RECORD}  ${VALUE} "X"       

done <"$FILENAME"

输入文件:

A 1
B 2

脚本的输出:

 X1
 X2

如果我从echo&#34; x&#34;中删除,例如

echo  ${RECORD}  ${VALUE}

我正在

A 1
B 2

出了什么问题?

更新:
如果我做

echo  "X" ${RECORD}  ${VALUE}

正确打印:

X A 1
X B 2

和:

  echo  ${RECORD} "X"

也打印正确,所以我猜测问题是VALUE,可能包含返回马车符号(因为输入文件是在Windows上创建的)

2 个答案:

答案 0 :(得分:0)

在循环内添加:

VALUE=`echo $VALUE| tr -d '\r'`

解决了这个问题,如果您有更好的解决方案,那么您会受到欢迎。

答案 1 :(得分:0)

可以使用参数扩展运算符从值的末尾删除字符(如果存在)。

VALUE=${VALUE%$'\r'}

这是在shell中处理的,无需启动新进程。