как проверить, является ли ввод цифрой или алфавитом в GNU bash - PullRequest
0 голосов
/ 13 апреля 2020

Я получаю сообщение об ошибке «Если», а затем «» неожиданно в команде GNU sed. Как проверять ввод постоянно. Пожалуйста, помогите мне

if ! [[ "$versionCode" =~ ^[0-9]+$ ]]
then
    echo "Sorry integers only"
fi

Это моя ошибка

sh: 1: Syntax error: end of file unexpected (expecting "then")

sh: 1: Syntax error: "then" unexpected

Sorry integers only
sh: 1: Syntax error: "fi" unexpected

обновление:

echo "Enter version code" 
read versionCode
case "$versionCode" in
   (*[!0-9]*) echo "Sorry integers only";;
   ("")       echo "Empty is not a version code";;
   (*)        echo "do something with $versionCode";;
 esac
echo "$versionCode"
sudo  sed "s/\(versionCode[[:space:]]*\)[0-9]*/\1${versionCode}/" Version.gradle

это моя ошибка

Enter version code
4

sh: 1: Syntax error: end of file unexpected (expecting ")")

sh: 1: Syntax error: word unexpected

sh: 1: Syntax error: word unexpected

sh: 1: Syntax error: word unexpected

sh: 1: Syntax error: "esac" unexpected

1 Ответ

0 голосов
/ 13 апреля 2020

POSIXly портативный способ сделать это -

 case "$versionCode" in
   (*[!0-9]*) echo "Sorry integers only";;
   ("")       echo "Empty is not a version code";;
   (*)        echo "do something with $versionCode";;
 esac
...