【发布时间】:2018-08-23 16:13:17
【问题描述】:
我有一个文件 log_file,其内容如下:
CCO O-MR1 Sync:No:3:No:346:Yes
CCO P Sync:No:1:No:106:Yes
CCO P Checkout:Yes:1:No:10:No
CCO O-MR1 Checkout(2.2):Yes:1:No:10:No
我正在尝试获取基于“:”分隔符的 4 个字段 我的脚本是
#!/bin/bash
log_file=$1
for i in `cat $log_file` ; do
echo $i
field_a=`echo $i | awk -F '[:]' '{print $1}'`
echo $field_a
field_b=`echo $i | awk -F '[:]' '{print $2}'`
echo $lfield_b
...
done
但此代码为 field_a 提供的值是错误的,它根据“”分隔符拆分行。 echo $i 也会打印错误的值。
我还能用什么来纠正这个问题?
【问题讨论】:
-
见DontReadLinesWithFor。顺便说一句,另请参阅 BashPitfalls #14 --
echo $foo应该是echo "$foo"。 shellcheck.net 也是一个有用且相关的资源。