У меня есть сценарий, который читает из файла.
################################################
# IP TABLES FOR INSTALL_CONFIG #
# #
# m = master #
# k = kibana #
# d = data #
# i = ingest #
# c = coordinator #
# Format: xxx.xxx.xxx.xxx m #
################################################
#
10.1.7.93 m
10.1.7.94 k
10.1.7.95 d
Эта функция используется сценарием.
function readIpFile () {
initMasterVar=0
grep "^[^# ]" node_list.txt | awk '$2 ~ /m/ { print $1 }' > tmp_master_list.txt
grep "^[^# ]" node_list.txt | awk '$2 ~ /k/ { print $1 }' > tmp_kibana_list.txt
grep "^[^# ]" node_list.txt | awk '$2 ~ /i/ { print $1 }' > tmp_ingest_list.txt
grep "^[^# ]" node_list.txt | awk '$2 ~ /d/ { print $1 }' > tmp_data_list.txt
grep "^[^# ]" node_list.txt | awk '$2 !~ /k/ { print $1 }' > tmp_all_nodes.txt
}
Назначение функций - чтение с главного узла list, затем сортирует список по файлам tmp в соответствии с ролью, назначенной каждому IP или FQDN. Оператор grep фильтрует все строки, начинающиеся с #, и AWK выполняет поиск роли во втором поле и печатает IP-адрес с этой ролью, перенаправленный в файл tmp, который позже будет использован в скрипте.
Моя проблема в том, что раньше эта функция работала нормально. Команды индивидуально работают в моем терминале, и grep может найти файл и отфильтровать его соответствующим образом. Однако, когда ввод в этой функции в этом скрипте, он прерывается.
Я не уверен, что я делаю неправильно. Мой скрипт, помещенный в shellcheck, не обнаружил ошибок, которые могли бы вызвать это.