tr -d не работает с возвратом каретки

Я хочу избавиться от \ n из переменной. Я нашел много ответов для тех, которые говорят «использовать tr -d», но tr -d не работает для меня

 echo "$test" | od -c 0000000 4 4 2 5 2 \n 0000006 

то я использую tr -d

 test2=$(echo $test | tr -d '\n') 

но ничего не меняется

 echo "$test2" | od -c 0000000 4 4 2 5 2 \n 0000006 

Использование tr -d '\n' , удаляет \n (т.е. символ новой строки), как ожидалось. Но вы проверяете это с помощью команды echo . Команда Echo сама поместит новый символ строки @ конец строки ввода и, следовательно, вы не сможете увидеть ожидаемый результат.

Проверьте переменную с приведенным ниже набором команд.

 test2=$(echo "$test" | tr -d '\n') printf "%s" $test2 | od -c echo -n $test2 | od -c 

Вывод скрипта:

 0000000 hello 0000005 0000000 hello 0000005 

Примечание: echo -n: Из страницы эхо-man: -n не выводить конечную новую строку printf: не добавляет \ n в конце

echo добавляет \n по умолчанию. Использовать -n чтобы опустить

 [6]root@lab7:~> echo 'lol' |od -c 0000000 lol \n 0000004 [6]root@lab7:~> echo -n 'lol' |od -c 0000000 lol 0000003