私はstackoverflowとbashスクリプトの作成に不慣れです。私は仕事のためのプロジェクトを行っており、かなり単純なスクリプトを書く必要があります。データの列がいくつかあります。1つは時間で、もう1つはhrrです。これは、時間に対して連続的に増加する変数です。線形補間を実行して、hrr = hrrの最後のエントリの50%である対応する時間を見つけようとしています。
これが私がこれまでに持っているものです:
#!/bin/bash
clear
entry=$(awk 'NR>4{print $11}' thermo.out | awk -F, '{$1=$1*a;print}' a=0.50 | tail -1 )
awk 'NR>4{print $11}' thermo.out | awk -F, '{$1=$1*b;print}' b=1.0 > hrr.out
awk 'NR>4{print $1}' thermo.out > t.out
hrr=($(<hrr.out))
t=($(<t.out))
length=${#t[@]}
end_array=$(($length-1))
#Start looping through hrr from 0 to entry that exceeds 0.50*hrr(end)
ind=0
while [ ${hrr[$ind]} -lt ${entry} ]
do
echo "ind = $ind"
ind=$[$ind+1]
done
exit 0
明らかに、関心のあるhrrエントリを見つけたり、補間したりするためのコードをループに記述していません。コードがwhileループに正常に出入りできることを確認しようとしていました。したがって、自分が持っているものを実行しようとすると、次のエラーが発生します
./interp: line 16: [: 796.28: integer expression expected
したがって、hrrのエントリと要素は整数ではないことを理解しています。このエラーを修正するために必要な簡単な変数宣言はありますか、それとも回避策を考えられますか?bashスクリプトで浮動小数点演算とロジックを実行するのは面倒な場合があることは理解していますが、あなたの1人が私を助けてくれることを望んでいました。よろしくお願いします!