为什么我在函数vs命令行中使用命令得到不同的结果?

时间:2017-11-09 02:51:10

标签: bash shell

我在bash中编写了一个简单的函数来搜索CSV文件的第一行并返回匹配标题值的列号:

   Race Day Athlete  Position  firsts  Total 1st Position
0     Day 1   Steve         1     1.0                 1.0
1     Day 1    Jane         2     0.0                 0.0
2     Day 1    Bill         3     0.0                 0.0
3     Day 2    Bill         1     1.0                 1.0
4     Day 2   Steve         2     0.0                 1.0
5     Day 2    Jane         3     0.0                 0.0
6     Day 3    Jane         1     1.0                 1.0
7     Day 3    Bill         2     0.0                 1.0
8     Day 3   Steve         3     0.0                 1.0
9     Day 4   Steve         1     1.0                 2.0
10    Day 4    Jane         2     0.0                 1.0
11    Day 4    Bill         3     0.0                 1.0

当我调用该函数时:

findcolnum()
{
    colnum=`head -1 $1 | awk -F"," '{for(i=1;i<NF;i++) if($i==$2) {print i}}'`
    echo $colnum
}

无论列是否存在,结果始终为“2”。

在命令行中,我在将命令放入脚本之前对其进行了测试,它返回了正确的值:

analogcol=`findcolnum "$DIR/PCICCP_AnalogPoint_DMS.csv" "AnalogPointRef"`

有谁能帮我理解这里发生了什么?

0 个答案:

没有答案