сценарий оболочки для проверки состояния переданной строки

строка состояния начинаются с верхнего или нижнего алфавитов или подчеркивания, например, _abc или xyz или Abc

строка может содержать цифры после первого символа типа _f9 или f10 или car20 или top10cars

строка никогда не должна содержать специальные символы, как! @ # $% ^ & * () + – =

здесь мой маленький сценарий

if [[ $1 =~ ^[A-Za-z_]+$ ]]; then echo it matches else echo does_not match fi 

когда я передаю аргумент, как только & или * или (, сценарий не работает, иногда курсор никогда не возвращается, мне нужно нажать ctrl + c

 for example ./script.sh (abc ./script.sh && ./script.sh &abc 

Что случилось с скриптом

  • уничтожение всех процессов, связанных со сценарием
  • Как запустить скрипты MYSQL из сценария оболочки с переменными bash?
  • объясните команду `printf -" #! $ {opt_E} "`
  • Совпадение шаблонов
  • Как заставить поиски google / youtube использовать bash?
  • Проверьте, равна ли переменная открытой круглой скобке
  • Программа сценария оболочки Bash, которая запрашивает и читает два целых числа от пользователя.
  • Сортировка файлов по наивысшему числу в имени файла
  • 2 Solutions collect form web for “сценарий оболочки для проверки состояния переданной строки”

    Цитирование.

    В сценарии используйте "$1" а не только $1 .

    В командной строке используйте

     ./script '*(ontehu' 

    вместо

     ./script *(ontehu 

    • ./script.sh (abc Это синтаксическая ошибка в грамматике оболочки.

    • ./script.sh && Это заставляет оболочку думать, что в командной строке есть условное И, и она ожидает что-то в правой части оператора && .

    • ./script.sh &abc Это две команды: ./script запускается как фоновый процесс (с помощью & ) и команда abc .

    Во всех этих случаях аргумент должен быть указан (одинарный кавычек, в идеале, если только вам не понадобится оболочка для вставки значения переменной оболочки, и в этом случае она должна быть двойной).


    Ваш скрипт:

     if [[ $1 =~ ^[A-Za-z_]+$ ]]; then echo it matches else echo does_not match fi 

    Ответить $1 :

     if [[ "$1" =~ ^[A-Za-z_]+$ ]]; then echo it matches else echo does_not match fi 

    Разрешить цифры в хвосте значения:

     if [[ "$1" =~ ^[A-Za-z_][A-Za-z0-9_]+$ ]]; then echo it matches else echo does_not match fi 

    Соблюдайте отчетность об ошибках (это дополнительно):

     if [[ "$1" =~ ^[A-Za-z_][A-Za-z0-9_]+$ ]]; then printf '"%s" is a valid variable name\n' "$1" else printf '"%s" is not a proper variable name\n' "$1" >&2 exit 1 fi 

    Это потому, что это зарезервированные символы.

    & означает команду запуска в фоновом режиме

    * разрешает все файлы / директории в фактическом каталоге, которые затем передаются как аргументы

    () используется для предпочтений порядка команд или объявлений функций

    Если вам нужны такие символы в строке, поместите их в кавычки "" или "

    Interesting Posts

    есть ли libboost-all вместо libboost-all-dev?

    Как заставить rpm проверять зависимости во время обновления?

    Приложения не используют одни и те же сопоставления клавиатуры, кажется

    Можно ли настроить QEMU / KVM + OCFS2 для пробивания отверстий в разреженных файлах изображений, когда файлы удаляются в гостевой системе?

    'ls -1': список имен файлов без расширения

    Как некоторые пакеты deb найдены dpkg-query, пока они еще не установлены?

    Напишите текст в последней строке документа

    Я SSH на сервер linux через putty, и у меня есть связанный диск на моей машине Windows. Как я могу получить доступ к файлам на других дисках?

    Как связать файл журнала с / dev / null и восстановить автоматически используемое пространство

    Как редактировать файл sudoers в Fedora?

    Как сообщить gzip о сохранении исходного файла?

    Каков процесс `sendmail`?

    Большинство установленных пакетов, устаревших в aptitude, обновления не найдены

    Как я могу видеть перемещенные строки в сравнении файлов с vimdiff / diff?

    Какой графический язык программирования использует OpenBox в первую очередь?

    Linux и Unix - лучшая ОС в мире.