我正试图从文件"地震_c_am.txt"中提取一些地震发生的xy坐标及其震级,并根据震级将其绘制为各种大小和颜色的圆圈。以下是我目前所拥有的:
25 i=`awk '{ FS = "|" ; print $11}' seismic_c_am.txt`
26
27 if [ "$i" -gt 7 ] ; then
28 awk 'NR%25==0 { FS = "|" ; print $4, $3}' seismic_c_am.txt | psxy $rgn $proj -Sc0.25c -Gred -O -K >> $psfile ;
29 fi
30
31 if [ "$i" -gt 5 ] && [ "$i" -le 7 ] ; then
32 awk 'NR%25==0 { FS = "|" ; print $4, $3}' seismic_c_am.txt | psxy $rgn $proj -Sc0.2c -Gorange -O -K >> $psfile ;
33 fi
34
35 if [ "$i" -le 5 ] ; then
36 awk 'NR%25==0 { FS = "|" ; print $4, $3}' seismic_c_am.txt | psxy $rgn $proj -Sc0.1c -Gyellow -O -K >> $psfile ;
37 fi
这个脚本似乎只是将所有幅度(11美元)打印到终端中,最后一行写道:
.
.
3.6
4.0
1.7
3.6 : integer expression expected
但我不知道这是指哪一行!可能是27号线、31号线还是35号线?(见上文)
Bash不做浮点运算,只做整数运算。
由于你是在与整数进行比较,你可以让awk打印整数部分。
i=`awk '{ FS = "|" ; printf "%d", $11}' seismic_c_am.txt`
如果你想知道是哪一行导致了这些错误,可以在脚本中添加命令set -x
以打开跟踪模式:bash会在执行之前打印每一行脚本。如果你只想跟踪脚本的一部分,可以使用set +x
关闭跟踪。
由于您要多次重复相同的代码段,因此可能需要对脚本进行一些重组。
i=`awk '{ FS = "|" ; printf "%d", $11}' seismic_c_am.txt`
if [ $i -ge 7 ]; then
sc_value=0.25 color=red
elif [ $i -ge 5 ]; then
sc_value=0.2 color=orange
else
sc_value=0.1 color=yellow
fi
awk 'NR%25==0 { FS = "|" ; print $4, $3}' seismic_c_am.txt |
psxy $rgn $proj -Sc${sc_value}c -G$color -O -K >> $psfile