$(echo $RANDOM | cut -b 1-2)는 쉘 스크립트에서 빈 줄을 반환합니다.

$(echo $RANDOM | cut -b 1-2)는 쉘 스크립트에서 빈 줄을 반환합니다.

이 스크립트가 있습니다.

#!/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)을 사용합니다.

관련 정보