Специальные символы в пароле root в аварийном режиме

Вот почему вы видите эту ошибку:

$a = /is115/idm/dsproj/scripts/l.txt

В этом месте кода переменная aне установлена. ksh заменит переменную пустой строкой, что приведет к:

 = /is115/idm/dsproj/scripts/l.txt

Затем ksh пытается выполнить строку, пытается найти команду =, не находит ее и выдает первую ошибку, которую вы видите.

Как указывает @Thomas, синтаксис присваивания переменной следующий:

varname=value

без $слева -и без пробелов вокруг =.https://www.shellcheck.net/укажет на эти ошибки.

Тогда у вас есть

    if [ $a -gt 0 ];

Поскольку aне имеет значения, ksh выполняет подстановку и пытается выполнить

    if [  -gt 0 ];

Команда [(да, это команда, псевдоним команды test)не понимает оператор ‑gtбез левого -операнда, и вы получаете 2-й сообщение об ошибке.

Команда [завершается со статусом, отличным от -нулевым, оператор ifзатем выполняет блок else, и вы получаете сообщение «все хорошо».

Вот почему важно заключать все переменные в одинарные скобки.[... ]

    if [ "$a" -gt 0 ];

В более общем случае всегда заключайте переменные в кавычки, если только вы не понимаете, когда конкретно следует опускать кавычки. См. также Последствия для безопасности, если забыли заключить переменную в кавычки в оболочках bash/POSIX

.

3
02.06.2021, 17:19
1 ответ

В консоли вы можете использовать Alt xyz (xyz это число на цифровой клавиатуре ).

Например, Alt233 должно отображать é.

Существует много источников списка кодов, например вот этот .

Я не знаю, сработает ли это, потому что в зависимости от локали фактические символы пароля могут быть, например, UTF -8.

0
28.07.2021, 11:27

Теги

Похожие вопросы