このスクリプトがあります。
#!/bin/sh
guess=$(echo $RANDOM | cut -b 1-2)
read -p "Im thinking of a number, can you guess what it is? " number
case "$number" in
"$guess") echo "\nCongratulation number guessed corectly!"
exit 0
;;
*) echo "\nIncorrect number guessed, try again? [yes or no]"
read yesorno
case "$yesorno" in
"yes") sh guess.sh
;;
"no") echo "\nHave a nice day!"
exit 0
;;
*) echo "Invalid input"
exit 1
;;
esac
;;
esac
$ guess変数は2桁の数字を返す必要がありますが、nullを返します。sh guess.sh
正確な数字を推測するのではなく、ゲームを実行してEnterキーを押すと、おめでとうメッセージが返されます。私はどこで間違っていますか?
答え1
bash
代わりに使用sh
guess=$(echo $RANDOM | cut -b 1-2)
^-----^ SC3028: In POSIX sh, RANDOM is undefined.
答え2
カットのフラグは-b
バイト用です。-c
代わりに文字フラグを試してください。
#!/bin/bash
また、shebangをまたはに変更することをお勧めします#!/usr/bin/env bash
。それ以外の場合は、システムデフォルト(UbuntuのPOSIXモードdash
)を使用してください。