次の場合、Bashスクリプトを実行できません。

次の場合、Bashスクリプトを実行できません。

誰かが私のスクリプトのエラーを指摘できることを願っています。私の学びの源泉が間違っているので混乱しています。

このスクリプトの目的:ユーザーが入力した数字から数字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 ]私はそれがindex1以上であることを確認したいと思います。[ $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 

関連情報