I have a bash variable that ends with \r\n:
$ # Not the real command to get VAR's value, just an example
$ VAR="$(echo -en 'hello\r\n')"
$ hexdump -C <<< "$VAR"
00000000 68 65 6c 6c 6f 0d 0a |hello..|
00000007
I would like to drop the \r (the \n itself is correctly handled by bash).
I may trim it (VAR="$(tr -d '\r' <<< "$VAR")"), but that implies to run a process just for that task.
I tried using "Remove matching suffix pattern" bash feature, but cannot find which pattern to use (e.g., ${VAR%\r}, ${VAR%\x0d}, ${VAR%[\r]}—but neither of them does work).
Any idea how to drop the \r without creating a subprocess?
CodePudding user response:
Use the ANSI C quotes. With substitution, use
var=${var//$'\r'}
If you want to only remove the \r before the final \n, you can use
var=${var%$'\r\n'}$'\n'
i.e. you have to remove both the \r and \n, so you need to add the \n back.
