if then else

Я пытаюсь написать сценарий, который проверяет определенные данные в существующих файлах. пример:

#!/bin/bash set -x if [ 'grep PASS_WARN_AGE /etc/login.defs' == 'PASS_WARN_AGE 7' ]; then echo "RHEL-06-000054 not a finding" elif [ 'grep PASS_WARN_AGE /etc/login.defs' == 'PASS_WARN_AGE 0' ]; then sed -ie 's/PASS_WARN_AGE\s\s\s\s0/PASS_WARN_AGE 7/g' /etc/login.defs else echo "Needs further review" fi 

Этот скрипт игнорировал строки if и elif и только эхо-строку «Требует дальнейшего пересмотра». По сути, я хочу, чтобы этот скрипт сказал мне, если текущее значение установлено равным 7. Если значение равно 0, а не 7, то он выполняет команду sed, изменяя значение в файле /etc/login.defs. Если представлен какой-то неизвестный результат, он сообщает пользователю, что дальнейший обзор необходим. Вся помощь приветствуется.

3 Solutions collect form web for “if then else”

Я понял.

  #!/bin/bash set -x grep -q 'PASS_WARN_AGE 7' /etc/login.defs if [ ${?} -eq 0 ]; then echo "RHEL-06-000054 not a finding" grep -q 'PASS_WARN_AGE 0' /etc/login.defs elif [ ${?} -eq 0 ]; then sed -ie 's/PASS_WARN_AGE\s\s\s\s0/PASS_WARN_AGE 7/g' /etc/login.defs; echo "RHEL-06-000054 patched" else echo "needs further review" fi 

Вы можете просто безоговорочно запустить sed в файле, если хотите:

 sed -i .bak -Ee 's/^PASS_WARN_AGE\s+0/PASS_WARN_AGE 7/' /etc/login.defs 

Я бы с осторожностью использовал шаблон, подобный \s\s\s\s так как количество пробелов может меняться. Я не думаю, что стандарт является стандартным, но я полагаю, что если контекст RHEL, у вас будет GNU sed.

вам нужно использовать backticks (`), чтобы команды работали, в коде, который вы указываете в своем вопросе, вы сравниваете две статические строки. `! = '

  • Безопасно ли экспортировать переменную, содержащую пароль, а затем сбросить ее?
  • Передача переменной в скрипт bash, который использует «EOF» и рассматривает переменную буква
  • Лучший способ обфускать сценарий AIX
  • Совместное использование переменных в сценариях подшивки
  • В чем разница между вызовом скрипта perl через sh или perl
  • Сценарий Bash для обнаружения загруженных файлов триггеров много раз для одного файла
  • Есть ли способ, с помощью которого я могу рекурсивно рекурсивно перебирать все файлы в текущем каталоге, чтобы найти шаблон, а затем распечатать его в порядке от максимума до минимума?
  • «Дружественные» имена цветов терминала в сценариях оболочки?
  • Bash - Конвертировать символ escape-символа в BBCode
  • Сценарий с ошибкой «команда не найдена: ^ M»
  • ssh на несколько хостов и запустить команду
  • Найти | параллельный выполнение скрипта с помощью пути от find + другие аргументы
  • Interesting Posts

    Итерировать файлы в папке

    Как установить системные шрифты как noto?

    Есть ли способ найти время простоя сетевой карты в unix?

    Как подключиться автоматически к Wi-Fi в KDE?

    Получить IPv6-адрес веб-сайта с помощью терминала

    Преобразование Perl-скрипта в bash

    Есть ли более простой способ навигации по моему терминалу, ala tmux?

    Проверьте зависимости bash / shell

    NFS-файл с тем же именем, но с другим содержимым в зависимости от хоста

    В чем разница между /etc/rc.local и /etc/init.d/rc.local?

    Яркость экрана возвращается к максимальному после возврата с дисплея `xset dpms` suspend

    Создание пользователя с помощью / sbin / nologin, любое преимущество для запуска passwd и установки на случайные

    Линейка приложений для корневого приложения Linux Mint ломается при изменении элементов управления

    Как переносить Windows 10 / Linux Ubuntu на SSD

    Выполните вывод parse ls с помощью sed, чтобы получить расположение файлов файлов с определенными именами

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