5

基本的に 2 つの 10 進数を評価するスクリプトがあります。

if (( $(echo "$p $q" | awk '{ print ($1 < $2)}') )); then
   echo "Evaluation: Acceptable!"

q は、ユーザー入力からの 10 進数または数値です。
pは計算値です。

したがって、p=1、q=2 の場合、結果は許容可能です。

質問#1
計算された p が -150 で q=2 の場合、どのように許容できないと評価しますか。基本的に、p が 0 未満または負の値の場合、結果は受け入れられません。

質問#2
q は範囲です: -q < 0 < q
例: ユーザー入力 q=0.01
許容範囲: -0.01 から 0.01
p がこの範囲内にある場合は許容され、そうでない場合は許容されません。

何か案は?

4

2 に答える 2

3

あなたの2つの質問が追加の制限なのか、「if (p < q)」条件に追加されるのか、それとも別のものなのかは明確ではありませんでした. 3 つの個別の awk 呼び出しを示します。組み合わせる必要がある場合はお知らせください。ほとんどの場合、&&if 条件内で区切られた条件を追加するだけです。$1 と $2 を使用する代わりに変数 p と q を設定する方がわかりやすいように思えますが、ワンライナーを書いているだけであれば、それほど重要ではありません。

echo $p $q | awk '{ p=$1; q=$2; if (p < q) print "acceptable"; }'
echo $p $q | awk '{ p=$1; q=$2; if (p < 150) print "UNacceptable"; }'
echo $p $q | awk '{ p=$1; q=$2; if (p >= -q && p <= q) print "acceptable"; else print "UNacceptable"; }'
于 2013-10-22T18:08:07.667 に答える
3

I think this awk should be enough for you:

awk '{print ($1 > 0 && $1 < $2)}'

About your requirement # 2:

Since any p cannot be negative as per requirement #1 therefore just checking $1 < $2 is enough for you.

于 2013-10-22T11:10:09.250 に答える