BASH: как запретить пользовательский ввод "*", а также какие регулярные выражения я должен проверять для пользовательского ввода? - PullRequest
2 голосов
/ 02 февраля 2012

Как запретить пользовательский ввод "*"

read -p "inputData : " inputData
#user input *

echo $inputData
#here it outputs the current files in the directory... how do we prevent this?

какие регулярные выражения я должен проверять для ввода пользователя?

вот что я получил до сих пор ...

count=`echo "$1" | grep -q "[\*\.\+\?]" `

1 Ответ

5 голосов
/ 02 февраля 2012

Заключите вашу переменную в кавычки, чтобы предотвратить расширение пути

echo "$inputData"

Пример

$ read -r -p "Gimme input: " ans; echo "You entered >$ans<"
Gimme input: *
You entered >*<

В качестве альтернативы, вы можете отключить сглаживание, сначала запустив set -f в своем скрипте

Если вы выполните одно из этих действий, вам не нужно проверять наличие каких-либо неприятностей на входе , если вы не выполняете его через eval

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...