Недавно я создал другой поток с вопросом о цикле for в сценарии bash, который я писал для своей курсовой работы в GCSE. У меня есть еще одна проблема с тем же сценарием bash (однако с тех пор он развился честно с момента последнего).If/Else statement issues в bash scripting
Вот код:
#!/bin/bash
# A script that creates users.
uerror='^[0-9]+$'
echo "This is a script to create new users on this system."
echo "How many users do you want to add? (in integer numbers)"
read am
echo " "
if [[ $am =~ $uerror ]] ; then
echo "ERROR: Please use integer numbers."
echo "Please re-enter the amount."
read am ;
else
echo " "
for i in $(seq "$am")
do
echo "Enter a username below:"
read usern
sudo useradd $usern
sudo passwd $usern
echo " "
echo "User $i '$usern' added."
echo " "
echo "What group do you want to add $usern to?"
read group
sudo usermod $usern -aG $group
echo "$usern added to $group"
echo " "
echo "-------------------"
echo " "
done
fi
Проблема заключается в, если заявление. Цель состоит в том, чтобы запретить пользователям вводить ничего, кроме целого числа. Но по какой-то причине я, похоже, не могу захватить вход с части read am
. Вместо этого сценарий проскакивает прямо в цикл for, где $(seq "$am")
, очевидно, будет иметь проблемы с пониманием ввода, который не является числом.
Результат этой ошибки выглядит следующим образом.
seq: invalid floating point argument
Однако, я не думаю, что это имеет отношение, потому что, насколько я могу судить, вопрос с, если/другое заявление.
Если бы кто-нибудь мог указать мне в правильном направлении, что мне нужно сделать, чтобы исправить это, я был бы очень благодарен.
Я также хотел бы повторить, что я все еще учась писать сценарии bash (а не особенно организованно), поэтому я, вероятно, допустил очень простую ошибку. Извиняюсь за это.
Thanks, Callum.
EDIT: Я ошибочно принял эхо-сообщение, теперь я изменил это, так что это на самом деле имеет смысл.
Что запятой делать после того, как ваш, если? – Almo
@Almo Быть правильным (если вы имеете в виду одно между ']]' и 'then'). –
Просто проверки. Это было первое, что выскочило на меня, как странное. – Almo