小さなシェル スクリプトを作成しましたが、if ステートメントが機能しません。
ファイル (14380 行、134 列) に対して while ループを実行しており、基準に従って特定の行で何らかの作業を行いたいと考えています number in column 4 > 6 and number in column 4 < 7
。列 4 の数値は実数であり、if ステートメントは整数のみで動作することがわかっています。これは私の問題ですか?get_lon
if ステートメントは私の番号を整数として読み取ると思っていました。get_lon=14.824
と読みますget_lon=14
。それはbeで大丈夫でしょう。長い間、エラーメッセージは表示されていませんが、必要に応じてデータをフィルタリングしません。現在、ファイルのすべての行がテストされています。
#!/bin/bash/sh
ulimit -s unlimited
datafile=$1
wfno=0
cat $datafile | while read line
do
wfno=`expr $wfno + 1`
echo $wfno
get_lon=`awk '(NR=='$wfno'){print $4}' $datafile`
echo $get_lon
if test ["$get_lon" > "6" -a "$get_lon" < "7"]
then
awk '(NR=='$wfno'){for(i=7;i<=NF;i++){print i-7, $i;}}' $datafile > xy
echo 'awk done '
some more stuff...
else
echo "Line not valid"
fi
done
お願いします、誰か助けてくれませんか?