シェルスクリプトで変数を文字列から数値に変換する

シェルスクリプトで変数を文字列から数値に変換する

このように整理されたファイルがあります。

gender,yearsExperience,yearsSchool,wage
female,9,13,6.3152956461
female,12,12,5.4797699786
female,11,11,3.6421699174
female,9,14,4.5933365997
female,8,14,2.4181574607

高校卒業者と大学卒業者(12/16年)の最低賃金差を求めようとします。次のように書かれたシェルスクリプトがあります。

#High School Min
HighSchoolMin=$(cat wages.csv | cut -d "," -f 3,4 | egrep "^[1]{1}[2]{1}," | tr , " " | sort -k2,2r | tail -n 1 | cut -d " " -f 2)

#College Min
CollegeMin=$(cat wages.csv | cut -d "," -f 3,4 | egrep "^[1]{1}[6]{1}," | tr , " " | sort -k2,2r | tail -n 1 | cut -d " " -f 2)

Difference=$($CollegeMin-$HighSchoolMin | bc)

echo The difference in minimum wages between high school and college graduates is $Difference.

私がbash this.script得るときline 13: 10.128063739-0.1028907398: command not found

変数を数値ではなく文字列として扱うためです。これを試しましたが、declare -i小数点以下の桁数のために機能せず、正確な答えが必要です。

誰もが解決策を知っていますか?私は正しい道を進んでいるのでしょうか、それともこれを行う方法に根本的な問題がありますか?

ベストアンサー1

シェルスクリプトには数値変数がまったくないので問題ありません。エラーメッセージは100%正確です。 10.128063739-0.1028907398はコマンドではありません。 bc に送信される出力を生成するには、コマンドが必要です。

努力する:

Difference=$(echo "$CollegeMin-$HighSchoolMin" | bc)

代わりに

おすすめ記事