У меня есть система имени пользователя. Пользователь выбирает имя пользователя, пароль и номер буфера, и это сохраняется в UPP.db. Я хочу иметь возможность анализировать этот текст, чтобы пользователь мог редактировать (сменить пароль) или «Удалить» («Удалить линию»). Я закодировал решение для обоих, но оба возвращают меня с ошибкой и переходят к части «Else» моего оператора If. Я предоставлю код для раздела редактирования, поскольку удаление довольно похоже и будет избыточным, обеспечивая оба.Разбор текста в BASH
echo "Please enter the username you wish to edit"
read usernamecheck
usernamesearch=$(grep $usernamecheck\$ UPP.db | cut -d" " -f1)
if [ $usernamecheck = $usernamesearch ]
then
echo "Please enter $usernamesearch PIN"
read pincheck
pinupdate=$(grep $pincheck\$ UPP.db | cut -d" " -f3)
if [[ $pin = $pinupdate && $usernamecheck = $usernamesearch ]]
then
echo "The user `grep "$pin"\$ UPP.db | cut -d" " -f1`'s password is about to be changed "
echo "Please enter the new password"
read newpass
passwordcheck=$(grep $pincheck\$ UPP.db | cut -d" " -f2)
sed -i "s/$passwordcheck/$newpass/g" UPP.db
echo "Password changed"
else
echo "The PIN is incorrect"
fi
else
echo "This username is not reconised"
fi
;;
Какая ошибка? –
Каковы поля вашего файла данных? Я думаю, что grep действительно не тот инструмент. –
Цитировать ALL переменные в '[...]' например. ('if [" $ usernamecheck "=" $ usernamesearch "]') ... и как общее правило везде else * except * inside '[[...]]' Также 'if [[$ pin = $ pinupdate && $ usernamecheck = $ usernamesearch]] 'должно быть' if [[$ pin = $ pinupdate]] && [[$ usernamecheck = $ usernamesearch]] ' –