从bash脚本调用awk脚本时出错
问题描述:
以下是从bash脚本中调用awk脚本Analyze_Stat.awk的正确方法吗? awk脚本在命令提示符下执行时可以正常工作。我试图在awk脚本中将参数$ 4,$ 5,$ 6作为值传递给变量Threshold,其语法是否正确?谢谢。从bash脚本调用awk脚本时出错
#!/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
答
我不确定在命令替换(反引用)中执行grep和awk会导致什么样的行为。如果你恰好有三个迭代,硬编码这三个步骤是:-)
grep -i 'Stat1' $Stat_File | awk -v Threshold="$4" -f Analyze_Stat.awk
grep -i 'Stat2' $Stat_File | awk -v Threshold="$5" -f Analyze_Stat.awk
grep -i 'Stat3' $Stat_File | awk -v Threshold="$6" -f Analyze_Stat.awk
最简单的解决方案,如果你喜欢一个循环,我建议如下:/:
shift 3; i=1
for arg in "[email protected]"; do
grep -i "Stat$i" $Stat_File | awk -v Threshold="$arg" -f Analyze_Stat.awk
let i++
done
在http看看/www.shellcheck.net/。 – 2014-10-16 14:39:17
为什么你有''''围绕'grep'和'awk'命令? – anubhava 2014-10-16 14:47:28
@Kugelman:感谢您的参考,非常有用 – 2014-10-16 15:03:28