grep searchstring / etc / crontab странное поведение в скрипте BASH

Я работаю над скриптом BASH, который создает автоматическое резервное копирование через crontab. Я пытаюсь использовать

myVARIABLE=`grep backup /etc/crontab` 

для возврата строк, содержащих «резервную копию», если запись уже сделана. Вместо того, чтобы возвращать строки из /etc/crontab похоже, он возвращает вывод нескольких команд ls. Я запустил команду

 grep backup /etc/crontab 

из командной строки и работает так, как ожидалось. Я также могу grep другие файлы через мой скрипт BASH, и он также возвращает ожидаемые результаты. Любые мысли о том, почему /etc/crontab вызывает проблемы grep в скрипте? Благодаря!

  • Список файлов, не сохраненных в репозиториях Git
  • su options - запуск команды в качестве другого пользователя
  • Проверка наличия файла в нескольких каталогах
  • grep для текста, который может или не может присутствовать
  • RHEL 7 как запустить давний скрипт перед выключением / перезагрузкой systemd
  • Сравнить 2 столбца в 2 разных файлах
  • Почему одно и то же sed regex (после grep) выходит из строя при запуске в сценарии bash или командной строке bash?
  • как заставить Expect ждать завершения другого скрипта
  • One Solution collect form web for “grep searchstring / etc / crontab странное поведение в скрипте BASH”

    Это связано с тем, что / etc / crontab содержит символы звездочки ( * ), которые, если они не экранированы, будут расширены оболочкой.

    Сравните выходные данные этих двух команд:

     echo $myVariable echo "$myVariable" 

    Первая команда использует переменную unescaped, поэтому символы звездочки будут расширены для всех файлов в текущем каталоге. Вторая команда – это то, что вы хотите, реальное содержимое файла crontab.

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