ユーザーに2つの整数をプロンプトして読み取るBashシェルスクリプトプログラム。

ユーザーに2つの整数をプロンプトして読み取るBashシェルスクリプトプログラム。

さて、私はしばらくこの問題を解決しようとしてきましたが、左右にエラーが見つかりました。これは基本を学ぶ最初の試みでした。したがって、どんなアドバイスでも役立つでしょう!

問題:ユーザーに2つの整数をプロンプトして読み取るBashシェルスクリプトを作成しようとしました。 2番目のパラメーターが最初のパラメーターよりも大きいとします。プログラムの出力は、最初の数字から始まり、2番目の数字で終わる数字の数です。

つまり、出力は次のようになります。

    Please enter the first number:
    3
    Please enter the second number, larger than the first:
    6

    3
    4
    5
    6

さて、これが私が今まで持っているものです〜

    read -p "Please Enter the first number : " n1
     echo "$n1"
   read -p "Please Enter the second number, larger than the first : " n2
     echo "$n2"
   FIRSTV=0
   SECONDV=1
   if [ 1 -gt 0]
   then
   count=$((FIRSTV-SECONDV))
   echo $COUNT
   fi

ベストアンサー1

利用可能な場合は、seq次のようにできます。

read -p "Please Enter the first number : " n1
echo "$n1"
read -p "Please Enter the second number, larger than the first : " n2
echo "$n2"

seq "$n1" "$n2"

この操作をすべてシェルで実行する必要があり、bashなどkshの最新のシェルを使用できる場合zsh(ただしash、またはdashなどの厳密なPOSIXシェルではない)、seqコマンドを次のように置き換えることができます。

eval "printf '%s\n' {$n1..$n2}"

bash / ksh / etcシーケンスはそのような変数ではなくeval実際の整数を期待しているので、2番目のバージョンを使用する必要があります。実際の値がシーケンス内で使用されるように変数を拡張します。{1..5}{$n1..$n2}eval{...}

ループを使用してこれを実行したいが、素晴らしいbash/ksh/etc機能がない場合、または行をseq次にeval置き換えることができます。

c="$n1"

while [ "$c" -le "$n2" ] ; do
    echo "$c"
    c=$((c+1))
done

dashこれは、ashなどをbash含むすべてのPOSIX互換シェルで機能します。

おすすめ記事