ryo*_*ait 3 bash carriage-return
我有一个以以下结尾的 bash 变量\\r\\n:
$ # Not the real command to get VAR's value, just an example\n$ VAR="$(echo -en 'hello\\r\\n')"\n$ hexdump -C <<< "$VAR"\n00000000 68 65 6c 6c 6f 0d 0a |hello..|\n00000007\nRun Code Online (Sandbox Code Playgroud)\n我想删除\\r(\\nbash 本身已正确处理)。
我可能会修剪它 ( VAR="$(tr -d '\\r' <<< "$VAR")"),但这意味着仅针对该任务运行一个进程。
我尝试使用“删除匹配后缀模式”bash 功能,但找不到要使用的模式(例如, 、${VAR%\\r}、${VAR%\\x0d}\ ${VAR%[\\r]}xe2\x80\x94 但它们都不起作用)。
知道如何在\\r不创建子流程的情况下删除它吗?
使用 ANSI C 引号。通过替换,使用
var=${var//$'\r'}
Run Code Online (Sandbox Code Playgroud)
如果您只想删除\rfinal之前的\n,您可以使用
var=${var%$'\r\n'}$'\n'
Run Code Online (Sandbox Code Playgroud)
即您必须删除 和\r,\n因此您需要添加\n后面。