Получение сообщения «Отказано в разрешении» при проверке регулярного выражения через сценарий оболочки

Проверьте следующий сценарий оболочки:

#!/bin/bash check=yes if [[ $check =~ yes|no ]]; then echo yes or no. else echo I did not understood the pattern. fi 

Выполняя мой OSX, все работает так, как ожидалось. Просто бросьте мне yes or nor. сообщение. Но при запуске на сервере, Ubuntu 14.04.5 LTS, появилась ошибка:

 teste.sh: 3: teste.sh: [[: Permission denied teste.sh: 3: teste.sh: no: Permission denied I did not understood the pattern. 

Уже проверена версия оболочки OSX и Ubuntu. OSX отправляет более старую версию оболочки:

 danilosilva@Bellatrix.local:/tmp/>$SHELL --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16) Copyright (C) 2007 Free Software Foundation, Inc. 

Хотя в Ubuntu:

 t4h@web129:~$ $SHELL --version GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 

Для меня информация о снарядах не была многозначительной.

Есть ли другой способ проверить регулярное выражение в оболочке, которое будет равномерно работать через любую систему * nix и совместимо с другими версиями оболочки?

One Solution collect form web for “Получение сообщения «Отказано в разрешении» при проверке регулярного выражения через сценарий оболочки”

Это сценарий bash который требует использования bash в качестве интерпретатора.

Когда вы запускаете его с помощью sh , вы не используете bash . Да, некоторые sh на самом деле замаскированы, но это не имеет значения (оно не будет вести себя как «обычный» bash при любых обстоятельствах). Обработайте sh и bash как взаимоисключающие интерпретаторы, как если бы они были perl и python (т. Е. Не пытались их смешивать).

Запустите сценарий с помощью

 $ bash teste.sh 

или сделать его исполняемым, запустить его напрямую:

 $ chmod +x teste.sh $ ./teste.sh 

Этот последний способ сделать это может быть предпочтительным. Это позволяет скрипту решить через #! -line, который должен использовать интерпретатор.

  • Удалить до первого вхождения, отредактировать эту строку и распечатать оставшиеся строки без изменений
  • Как использовать ограниченные символы в egrep?
  • Как выполнить многострочный grep для нескольких файлов?
  • Альтернативное регулярное выражение для {}
  • Заменить символы в строке соответствия
  • Как слить текст буквенных строк с числовыми строками в оболочке?
  • Regex не соответствует файлу с помощью `find`, несмотря на то, что он действителен
  • Ленивое регулярное выражение с использованием Bash
  • sed, grep или tr, которая возвращает только латинские символы из файла UTF-8
  • Регулярное выражение ERE для разделения () между разделителем и конечным словом
  • Команда Sed для удаления инклюзивного диапазона символов
  • Linux и Unix - лучшая ОС в мире.