У меня проблема. Я ищу помощь в отношении скрипта мониторинга, который я создаю.Bash while loop issue with output
Есть два компонента: 1) скрипт bash, который выполняет логику и 2) и ожидает сценарий, который подключается к различным узлам через SSH, запускает команду и возвращает результат в сценарий bash как многострочную переменную для дальнейших манипуляций.
Проблема, которую я имею, заключается в том, что мне нужно добавить текст вокруг каждой строки результата, но это намного труднее, чем ожидалось!
printf %s "$EXPECT_RESULT" | while IFS= read -r line
do
echo "$line" text
done
}
В результате небольшого теста выше, не как ожидалось:
line1_content txt
line2_content txt
line3_content txt
Вместо того, чтобы результат:
txte1_content
txte1_content
txte1_content
«TXT» добавляется в начало строки и перезаписывает часть результата, который я за ним.
Если я вручную выдаю $ EXPECT_RESULT как многострочную переменную, она ведет себя так, как ожидалось, поэтому проблема определенно связана с выходом, исходящим от ожидаемого.
Любая идея или ошибки, о которых я не знаю?
Спасибо!
Ваша переменная, вероятно, содержит символы '\ r' – Mat
Мат, вы были правы, большое вам спасибо. Для кого-то еще я использовал программу bash «od», чтобы показать все символы, а затем «tr», чтобы удалить символы \ r. Все работает сейчас! – SJN