3つの特定の読み取り変数が必要なスクリプトに構文エラーがありますか?

3つの特定の読み取り変数が必要なスクリプトに構文エラーがありますか?

私は私に与えられたスクリプトに答えを手書きする必要がありました。私が出力として提供する必要がある2つの情報セットは、読み取る変数が3 3 3と20 3 5かどうかです。

スクリプトを最初にテストすることにしましたが、まだ行19で構文エラーが発生し、問題が何であるかわかりません。ギャップと括弧のいくつかのバリエーションをテストしましたが、正しく機能しません。どんな助けでも大変感謝します。

#!/bin/sh
## Name of the program is challengelab3.2

## request information from the user
echo enter 3 numbers
read a b c

## check for proper range of numbers
if [ $a -gt 10 -o $b -gt 10 -o $c -gt 5 ]; then
    echo "numbers out of range"
    exit 1
fi

# process_data
x=$(($a + $b + $c))

while [ $x -gt 0 ]
do
     echo (( $x / 2%2 ))
     x=$((expr $x -1))
done

# end of program

ベストアンサー1

この試み:

#!/bin/sh
## Name of the program is challengelab3.2

## request information from the user
echo enter 3 numbers
read a b c

[ -z "$a" ] && echo a is missing, enter all 3 numbers && exit 1
[ -z "$b" ] && echo b is missing, enter all 3 numbers && exit 1
[ -z "$c" ] && echo c is missing, enter all 3 numbers && exit 1

if [ "$a" -gt 10 -o "$b" -gt 10 -o "$c" -gt 5 ]; then
    echo "numbers out of range"
    exit 1
fi

# process_data
x=$((a + b + c))

while [ "$x" -gt 0 ]
do
    echo $(( x / 2 % 2 ))
    x=$((x - 1))
done
  1. シェル操作が使用されます。$(( ... ))

  2. $(())そして外部の変数を引用することを忘れないでください[[ ]]。引用符なしで$a、$b、または$cが定義されていない場合(たとえば、ユーザーが1〜2個の数字のみを入力する場合)、-gt2つのオペランドが必要なため、構文エラーが発生します。

おすすめ記事