【发布时间】:2011-12-27 03:14:47
【问题描述】:
我在名为 'findError.sh' 的 bash 文件中有以下代码:
#!/bin/bash
filename="$1"
formatindicator="\"|\""
echo "$formatindicator"
formatarg="\$1"
echo "$formatarg"
count=`awk -F$formatindicator '{print $formatarg}' $filename | perl -ane '{ if(m/ERROR/) { print } }' | wc -l `
command="awk -F$formatindicator '{print $formatarg}' $filename | perl -ane '{ if(m/ERROR/) { print } }' | wc -l"
echo $command
echo $count
然后我在命令行中运行它,如下所示: sh findError.sh test.dat
但它给我的计数与运行回显的命令不同?这怎么可能?
即 回显的 $command 是:
awk -F"|" '{print $1}' test.dat | perl -ane '{ if(m/ERROR/) { print } }' | wc -l
但是回显的 $count 是:
3
但是,如果我只是在命令行下面运行这一行(而不是通过脚本) - 结果是 0:
awk -F"|" '{print $1}' test.dat | perl -ane '{ if(m/ERROR/) { print } }' | wc -l
示例输入文件(test.dat):
sid|storeNo|latitude|longitude
2|1|-28.03720000
9|2
10
jgn352|1|-28.03ERROR720000
9|2|fdERRORkjhn422-405
0000543210|gfERRORdjk39
注意事项:使用带有 bash 版本 4.0.17 的 SunOS
【问题讨论】: