Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在BASH中,如何替换使用HTML编写的文件中存在的变量<;textarea></textarea>;_Linux_Bash_Fedora_Archlinux_Bash4 - Fatal编程技术网

Linux 在BASH中,如何替换使用HTML编写的文件中存在的变量<;textarea></textarea>;

Linux 在BASH中,如何替换使用HTML编写的文件中存在的变量<;textarea></textarea>;,linux,bash,fedora,archlinux,bash4,Linux,Bash,Fedora,Archlinux,Bash4,如何替换\r\n #!/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 b

如何替换\r\n

#!/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

只需使用文字
^M
字符,它对bash没有任何意义。

您可以使用sed,即

AFTER=`echo $ORIGINAL | sed 's/\\r//g'`

这将删除第一个\r\n

AFTER="${ORIGINAL/$'\r'/}"

如果需要删除所有字符,请使用${ORIGINAL/$'\r'/}

另一个选项是使用“tr”删除字符,或将其替换为\n或其他任何内容

 ORIGINAL=$(echo ${BASH_REMATCH[1]} | tr -d '\r')

与@tharrk的方法类似,此参数替换也删除了最后一个'\r':

AFTER="${ORIGINAL%'\r'}"

=
IMHO周围不能有空格这是最好的答案,因为它避免了启动外部程序(如sed或tr)的开销。$'\r'开头的$对于将要替换的内容模式中的\r转换为“回车”字符至关重要。可能不太明显,将\r替换为零(在最后一个/和}之间没有字符。它在开头也会删除$。酷。工作!!!只是有一点改进:值分配中不允许使用空格:AFTER=echo。。。