0

シェル スクリプトを作成しようとしており、スクリプト内で 2 つの変数を使用して単純な除算を計算する予定です。私はそれを働かせることができませんでした。ある種の構文エラーです。

ここにtest.shという名前の私のコードの一部があります

    awk '{a+=$5} END {print a}' $variable1 > casenum
    awk '{a+=$5} END {print a}' $variable2 > controlnum
    score=$(echo "scale=4; $casenum/$controlnum" | bc)
    printf "%s\t%s\t%.4f\n", $variable3 $variable4 $score

機能しないのは $score だけです。

どっちか使ってみた

sh test.sh

また

bash test.sh

しかし、どちらも機能しませんでした。エラーメッセージは次のとおりです。

(standard_in) 1: syntax error

誰かがそれを機能させる方法を知っていますか? 本当にありがとう!

4

3 に答える 3

1

あなたのコマンドを正しく理解していれば、次のようにスコアの計算と単一のawkステートメントを組み合わせることができます

score=$(awk 'NR==FNR {a+=$5; next} {b+=$5} END {printf "%.4f", a/b}' $variable1 $variable2)

$variable1これは、と$variable2が有効なファイル名であることを前提としています

2 awk と 1 bc のアプローチに固執したい場合は、 @fedorquiのソリューションを参照してください。

于 2013-10-29T14:46:15.353 に答える