Как заменить \ r?
#!/bin/bash ... # setup if [[ $i =~ $screen ]]; then ORIGINAL=${BASH_REMATCH[1]} # original value is: 3DROTATE\r AFTER =${ORIGINAL/\\r/} # does not replace \r myThirdPartyApplication -o $replvar # FAILS because of \r fi
Это должно удалить первый \ r.
AFTER="${ORIGINAL/$'\r'/}"
Если вам нужно удалить все из них, используйте $ {ORIGINAL // $ '\ r' /}
Вы можете использовать sed, т.е.
AFTER=`echo $ORIGINAL | sed 's/\\r//g'`
Просто используйте буквальный ^M символ, он не имеет смысла использовать bash.
^M
Подобно подходу @ tharrrk, эта подстановка параметров также удаляет последний '\ r':
AFTER="${ORIGINAL%'\r'}"
Другой вариант - использовать 'tr', чтобы удалить символ, или заменить его на \ n или что-нибудь еще.
ORIGINAL=$(echo ${BASH_REMATCH[1]} | tr -d '\r')