【问题标题】:Printing IFS values from file从文件打印 IFS 值
【发布时间】:2015-08-31 05:40:16
【问题描述】:

脚本:

#!/bin/ksh
FILENAME=$1

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

done <"$FILENAME"

输入文件:

A 1
B 2

脚本的输出:

 X1
 X2

如果我从 echo "x" 中删除,例如

echo  ${RECORD}  ${VALUE}

我来了

A 1
B 2

怎么了?

更新:
如果我这样做了

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

打印正确:

X A 1
X B 2

和:

  echo  ${RECORD} "X"

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

【问题讨论】:

  • 我无法重现您的错误(我在 os x 10.9.5 上)。你是如何运行你的脚本的……比如ksh script inputfile
  • 。 myscript.sh 文件.txt

标签: linux shell parsing ksh


【解决方案1】:

在循环中添加这个:

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

解决了这个问题,如果您有更好的解决方案,我们非常欢迎。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2021-11-06
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 2015-06-06
      相关资源
      最近更新 更多