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

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

myVARIABLE=`grep backup /etc/crontab` 

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

 grep backup /etc/crontab 

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

  • Регулярное совпадение в ksh
  • Фильтрация вывода журнала на отдельных линиях
  • Проблема с strongSwan
  • выполнить команду на хосте из файла с пользователем из другого файла
  • Почему комбинация tail + grep + cut не работает?
  • Что означает eval X = \ $$ i в UNIX?
  • Bash-скрипт для файлов ftp только типа gz в текущем каталоге
  • Замена IP-адреса на результат sed: sed: -e выражение # 1, char 57: Непревзойденный (или \ (
  • One Solution collect form web for “grep searchstring / etc / crontab странное поведение в скрипте BASH”

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

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

     echo $myVariable echo "$myVariable" 

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

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