#!/bin/bash
echo -n "Enter a number >"
read number
for var in $number
do
read number
echo $var
done
echo "Go!"
8-1の数字を縦に印刷して最後に「go」と言いたいです。コード8を実行すると、Go!が印刷されます。
答え1
使用seq
:
#!/bin/bash
echo -n "Enter a number > "
read number
seq "$number" -1 1
echo "Go!"
出力:
Enter a number > 8
8
7
6
5
4
3
2
1
Go!
コードを少し改善するには、プロンプトを次のように出力しますstderr
。
>&2 echo -n "Enter a number > "
または、-p
次のオプションを使用してくださいread
。
read -p 'enter a number > ' number
答え2
コードが期待どおりに機能しない理由は次のとおりです。
- ループの各反復の数字を読み、
- ループ内の数字を減らさないでください
while
。 for
ループ反復に対して正しい範囲が生成されません。
では、zsh
次のことができます。
read '?Enter a number > '
printf '%s\n' {1..$REPLY} 'Go!'
これは、ユーザーからデータを読み取り、REPLY
数値リストを生成する中括弧拡張でそのデータを使用します(ユーザーが有効な数値を入力した場合)。リストの末尾に文字列を追加し、Go!
改行文字を区切り文字として使用してすべての文字列を印刷しますprintf
。
答え3
あなたはできます:
#!/bin/bash
echo -n "Enter a number: "
read number
for ((i=number; i>0; i--))
do
echo $i
done
echo "Go!"
または:
echo -n "Enter a number: "
read number
while ((number>0))
do
echo $number
let number--
done
echo "Go!"