Как безопасно экранировать переменную строку (пользовательский ввод) в bash?

Запустить:

yum remove php php-cli php-common php-gd php-ldap php-mysql php-odbc php-pdo php-pear php-pecl-apc php-pecl-memcache php-pgsql php-soap php-xml php-xmlrpc -y

Теперь бегитеyum install php-mbstring

Это должно вам помочь.

0
24.03.2020, 20:00
2 ответа

Как насчет немного другого подхода? Вместо того, чтобы удалять escape-символы и последовательности, вы можете разрешить пользователям использовать их для редактирования строки ввода с помощью read -e.

Если вы хотите, вы можете пойти еще дальше, записывая историю сообщений чата, например:

...
read -e -p "Message: " msg
history -s "$msg"
...

При этом, если кто-то делает опечатку в сообщении, он может нажать стрелку -, использовать стрелки влево -и вправо -, чтобы отредактировать и исправить опечатку, а затем нажать клавишу возврата, чтобы отправить исправленное сообщение..

5
28.04.2021, 23:19

Удаление всех непечатаемых -символов из строки сообщения:

#!/bin/bash
while read -p 'Message: ' message; do
        printf '[%s] User: %s\n' "$( date +%T )"  "${message//[^[:print:]]/}"
done >>file.txt

Подстановка параметра ${message//[^[:print:]]/}расширилась бы до значения переменной messageс удалением любого непечатаемого -символа. В локали POSIX печатными символами являются буквенно-цифровые символы, знаки препинания и пробел ([[:alnum:][:punct:] ], в основном ).

2
28.04.2021, 23:19

Теги

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