0

ユーザーに数値を入力するオプションを与えると、問題が発生します。その数値は 1 までカウントダウンされます。スクリプトは入力された値をエコーし​​ますが、カウントダウンしないため、エコー行の後で失われます。 1に。

#!/bin/bash

COUNTER=100
until [  $COUNTER -lt 1 ]; do
read -p "Enter a number between 1-100: " COUNTER
echo COUNTER $COUNTER
let COUNTER-=1
done
4

2 に答える 2

1

現代のを使用してこれを試してください:

#!/bin/bash

read -p "Enter a number between 1-100: " counter

until ((counter < 1)); do
    echo "counter $counter"
    ((counter--))
done
  • read正常に実行するには、の外側に置きfor loopます。
  • デフォルトで大文字の変数を使用しないでください。グローバル システム変数用に予約されています。
  • ((...))式が-gt, -lt...ゼロ以外の場合は終了ステータス 0 を返し、式がゼロの場合は 1 を返します。副作用 (割り当て) が必要な場合は、"let" の同義語としても使用されます。http://mywiki.wooledge.org/ArithmeticExpressionを参照してください。
于 2013-02-18T17:24:55.307 に答える
1

read次のようにループの外に移動します。

read -p "Enter a number between 1-100: " COUNTER    
until [  $COUNTER -lt 1 ]; do
  echo COUNTER $COUNTER
  let COUNTER-=1
done
于 2013-02-18T17:25:51.597 に答える