linux - 不应使用 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
解决方案
您可以获取文件,然后字符串的行为就像您在交互式 shell 中分配它一样:
$ (. param.env; echo "$MY_PARAM")
com:27}WMV)pviZN
我把命令放在一个子shell中,这样它们就不会污染环境。
推荐阅读
- jmeter - JMeter 能像 Selenium 那样做自动化测试吗?
- docker - kubernetes yaml 文件中的容器端口是什么
- python - 如何在 django 模板中将列表打印为单独的字符串
- spring - 在运行时更新主体的字段
- php - 如何清理 RSS XML 中的信息
- java - 使用Java下载到路径之前的图像文件压缩
- azure - 使用同一存储库中的 Azure DevOps 部署 WebApp 和 WebJobs
- ios - 如何防止 iOS 13 暗模式破坏电子邮件
- c - 迭代指针与字符数组
- javascript - 如何将公式设置为 Google 脚本中的值?