首页 > 解决方案 > 不应使用 echo 命令打印反斜杠 (\)

问题描述

我有一个具有以下内容的参数文件(param.env)。

MY_PARAM=com:27}WMV\)pviZN

另外,我正在获取 MY_PARAM 的值并写入随机文件的 bash 文件。

#!/bin/bash


value=$(grep "^MY_PARAM=" param.env | cut -d '=' -f2-)

value1=$(cat param.env | grep "^MY_PARAM" | sed 's/=/ /' | awk '{print $2}')
echo $value

echo $value1

printf '%s\n' "$value"

输出:

com:27}WMV\)pviZN
com:27}WMV\)pviZN
com:27}WMV\)pviZN

但是,我希望\被转义,不应该成为输出的一部分。我也不允许编辑 param.env。

预期输出:

com:27}WMV)pviZN

标签: linuxbashawkechocut

解决方案


您可以获取文件,然后字符串的行为就像您在交互式 shell 中分配它一样:

$ (. param.env; echo "$MY_PARAM")
com:27}WMV)pviZN

我把命令放在一个子shell中,这样它们就不会污染环境。


推荐阅读