2015-05-20 3 views
0

У меня проблема. Я ищу помощь в отношении скрипта мониторинга, который я создаю.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 как многострочную переменную, она ведет себя так, как ожидалось, поэтому проблема определенно связана с выходом, исходящим от ожидаемого.

Любая идея или ошибки, о которых я не знаю?

Спасибо!

+4

Ваша переменная, вероятно, содержит символы '\ r' – Mat

+0

Мат, вы были правы, большое вам спасибо. Для кого-то еще я использовал программу bash «od», чтобы показать все символы, а затем «tr», чтобы удалить символы \ r. Все работает сейчас! – SJN

ответ

0

Коврик, вы были правы, большое вам спасибо. Для кого-то еще я использовал программу bash «od», чтобы показать все символы, а затем «tr», чтобы удалить символы \ r. Все работает сейчас!