Вы делаете:
[ "$var" -ne password ]
-ne
(не равно) является целочисленным оператором [
т. е. он ожидает целые числа с обеих сторон.
Но у вас есть var=":"
в начале, и хотя вы читаете
пользовательский ввод и помещаете его в var
, предположительно ввод не целое число, что приводит к сообщению об ошибке.
В любом случае, если бы это было целое число, проверка завершилась бы неудачей, потому что пароль
сама по себе является строкой.
Если вы хотите сравнить строки на равенство, используйте оператор =
:
[ "$var" = password ]
Неравенство:
[ "$var" != password ]