Как удалить возврат каретки и новую строку из переменной в оболочке script

Я новичок в shell script. Я ищу файл, используя исходную команду, которая создается в окнах, и имеет возврат каретки. После того, как я исправлю, когда я добавляю некоторые символы, он всегда приходит к началу строки.

test.dat (which has carriage return at end)
testVar=value123

testScript.sh (sorces above file)
source test.dat
echo $testVar got it

Выход, который я получаю,

got it23

Как я могу удалить '\ r' из переменной. Любая помощь будет действительно заметной.

Ответы

Ответ 1

другое решение использует tr:

echo $testVar | tr -d '\r'
cat myscript | tr -d '\r'

опция -d означает delete.

Ответ 2

Вы можете использовать sed следующим образом:

    MY_NEW_VAR=$(echo $testVar | sed -e 's/\r//g')
    echo ${MY_NEW_VAR} got it

ИЗМЕНИТЬ

Кстати, попробуйте сделать "dos2unix" в вашем файле данных.

Ответ 3

используйте эту команду в своем файле script после копирования в Linux/Unix

perl -pi -e 's/\r//' scriptfilename

Ответ 4

Труба до sed -e 's/[\r\n]//g', чтобы удалить как возврат каретки (\r), так и линейные каналы (\n) из каждой текстовой строки