2014-10-04 3 views
-1

Итак, я создал сценарий для генератора паролей и валидатора. Он требует, чтобы пользователь вводил пароль, и он проверяется на соответствие спецификациям. Но проблема начинается, когда вход содержит следующие: [,], (,), &, где я получаю либо сообщения об ошибках, либо в случае & - процесс запускается в фоновом режиме, предлагая мне отменить запуск скрипта.Bash - работа с командами как параметры прохождения

Как мне как-то прочитать ввод как строку, а не строку, содержащую команды/другие символы, чтобы давать ошибки?

Я не могу опубликовать код здесь, так как это школьный проект.

+1

Можете ли вы хотя бы опубликовать код, демонстрирующий проблему? Тем не менее, вы, вероятно, не цитируете расширение параметра. – chepner

+1

Опубликуйте код, демонстрирующий проблему, а не ваш школьный проект. – jm666

+0

Без просмотра вашего кода трудно предоставить любую помощь. – anubhava

ответ

0

Ссылаясь на код, который я написал в ответ на your last question, см., Что я привел аргумент arg функции chartypes?

chartypes 'This is A $24 @test.' 

При подаче его строку, которая уже хранится в переменной, то, как сказал chepner, вам нужно привести переменную, используя двойные кавычки ", например:

s='A string with various "special" chars: [ ] () & !' 
chartypes "$s" 

Вы должны использовать двойной цитаты здесь, так что bash будет правильно расшифровывать $s. Если вы используете одинарные кавычки ', то в функцию будет передан литерал $s.

+0

Я пробовал с переменной $ variable = "$ 1", и все равно это не сработало. кстати, я не пытаюсь передать $ 1 функции, поскольку я не использую ваш диаграмм/вариации. Просто перейдем к простому if-else, чтобы проверить шаблоны в строках, и он отлично работает, за исключением той части, о которой я говорил. –

+0

@BruceStrafford Я просто использовал свою функцию диаграмм как удобный кусок примера кода, который вы уже f познакомиться. –

0

так что я типа в ./passwordgen JH7 & возвращается [1] 9329. если это ./passwordgen jdhh77 (- это дает ошибку о '(' неожиданный знак

С. командная строка интерпретируется ясно до начала ваш passwordgen сценарий, ничего в сценарии не может изменить эту интерпретацию. Таким образом, крайне важно, чтобы вы цитируете аргумент скрипта, если он содержит символы, имеющие специальное значение для оболочки.

./passwordgen 'Jh7&' 
./passwordgen 'jdhh77(' 
Смежные вопросы