从bash脚本调用awk脚本时出错

从bash脚本调用awk脚本时出错,bash,awk,Bash,Awk,以下是从bash脚本调用awk脚本Analyze_Stat.awk的正确方法吗?从命令提示符执行时,awk脚本工作正常。我试图将参数$4、$5、$6作为值传递给awk脚本中的变量Threshold,语法正确吗?谢谢 #!/bin/bash #arguments passed if [ "$#" -ne 6 ] then echo "Enter all arguments: Stat_Type Host Date(yyyymmdd) R1 R2 R3" exit fi

以下是从bash脚本调用awk脚本Analyze_Stat.awk的正确方法吗?从命令提示符执行时,awk脚本工作正常。我试图将参数$4、$5、$6作为值传递给awk脚本中的变量Threshold,语法正确吗?谢谢

 #!/bin/bash

 #arguments passed
 if [ "$#" -ne 6 ]
 then
    echo "Enter all arguments: Stat_Type Host Date(yyyymmdd) R1 R2 R3"
    exit
 fi

 Stat_File="/path/to/stat/"$1"."$2"."$3"*.stat"

 k=4
 for i in  {'Stat1','Stat2','Stat3'}
 do
    `grep -i $i $Stat_File > "Temp/"$i".out"`
    `awk -v Threshold="$"$k -f Analyze_Stat.awk "Temp/"$i".out"`
    k=$((k+1))
 done

我不确定在命令替换(backquote)中执行grep和awk时会出现什么行为。如果您正好有三个迭代,那么硬编码这三个步骤是最简单的解决方案:-)

如果您喜欢循环,我建议如下:

shift 3; i=1
for arg in "$@"; do
    grep -i "Stat$i" $Stat_File | awk -v Threshold="$arg" -f Analyze_Stat.awk
    let i++
done

看看。你为什么有
`
环绕
grep
awk
命令?@Kugelman:谢谢你的参考,非常有用
shift 3; i=1
for arg in "$@"; do
    grep -i "Stat$i" $Stat_File | awk -v Threshold="$arg" -f Analyze_Stat.awk
    let i++
done