이 스크립트가 있습니다.
#!/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
)을 사용합니다.