誰かが私のスクリプトのエラーを指摘できることを願っています。私の学びの源泉が間違っているので混乱しています。
このスクリプトの目的:ユーザーが入力した数字から数字1までの数字を計算します。
#!/bin/bash
echo -n Enter a number
read number
if (($number > 0)) ; then
index = $number
while [ $index => 1 ] ; do
echo $index
((index--))
break
done
fi
それが提供するエラー:インデックス:コマンドが見つかりません
答え1
index = $number
=
変数に値を割り当てるときはスペースを使用できません。使用index=$number
する((index = number))
[ $index => 1 ]
私はそれがindex
1以上であることを確認したいと思います。[ $index -ge 1 ]
または((index >= 1))
- このステートメントを使用する理由は何ですか
break
?ループを終了するために使用されます。 - この
if
声明も必須ではありません。 read -p
オプションを使用してユーザーにメッセージを追加することもできます。
一緒に入れてください:
#!/bin/bash
read -p 'Enter a number: ' number
while ((number >= 1)) ; do
echo $number
((number--))
done
答え2
問題は「if」の前にあります。
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
私はあなたが次のようなことをしたいと思います:
#!/bin/bash
echo -n "Enter a number : "
read number
echo $number
if [ $number -gt "0" ] ; then
ind="$number"
while [ $ind -ge "1" ] ; do
echo $ind
((ind--))
done
fi
答え3
それでは、少し見てみるのがいいと思います。
man index
変数の名前を変更すると、変更されたバージョンのスクリプトが機能します。
#!/bin/bash
echo -n Enter a number
read num
if (($num > 0)) ; then
ind=$num
while [ $ind -ge 1 ] ; do
echo $ind
((ind--))
break
done
fi