При написании зачастую возникает задача, проверить наличие определенной строки, в файле конфигурации и в зависимости от того есть она или нет, выполнить определенные действия.
Самый просто способ, это использовать параметр -q
1 2 3 4 5 | if grep -q PATTERN file.txt; then echo "found" else echo "not found" fi |
к примеру, проверяем наличие параметра node.name, в файле конфигурации Elasticsearch
1 2 3 4 5 | if grep -q "node.name" /etc/elasticsearch/elasticsearch.yml; then echo "found" else echo "node.name: ${HOSTNAME}" >> /etc/elasticsearch/elasticsearch.yml fi |
если он отсутствует, то добавляем текущий HOSTNAME в конфигурацию.
Если необходимо выполнить действие, только когда строка отсутствует, пригодиться следующая конструкция
1 2 3 | if ! grep -q "PATTERN" file.txt; then echo "not found" fi |
Пример
1 2 3 | if ! grep -q "node.name" /etc/elasticsearch/elasticsearch.yml; then echo "node.name: ${HOSTNAME}" >> /etc/elasticsearch/elasticsearch.yml fi |