bash - 回显包含美元的字符串变量的内容
问题描述
我已经看到如何在 bash 中回显包含未转义的美元符号的变量 但是,我的情况略有不同。
我有我的变量 var 我想回显变量 var 的内容。一个命令如
echo ${var}
或者
echo "${var}"
全球都很好
但是,在一种情况下,此变量取值
var=abdc$32
在这种特定情况下,我的回声不起作用,因为它在解释标志时没有abcd$32
按预期打印$
我不是为变量赋值的人,这就是赋值的原因
var='abcd$32'
无法完成。
该变量实际上是我从 Jenkins Credential Binding 插件中提取的密码'参见https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)。
句法 :
withCredentials([usernamePassword(credentialsId: 'my_credential', passwordVariable: 'MY_PASSWORD', usernameVariable: 'MY_USERNAME')])
{
sh "echo MY_PASSWORD ${MY_PASSWORD} "
}
如果我单引号,
sh 'echo MY_PASSWORD ${MY_PASSWORD} '
密码将被隐藏(这是您对插件的实际期望)。
我该怎么做才能回显 var MY_PASSWORD 的真实内容?
解决方案
正如@markp-fuso在评论中所说,在分配期间正在解释美元符号:var=abcd$32
这是 shell 引用基础知识,所以,改为:
var='abdc$32'
echo "$var"
了解如何在 shell 中正确引用,这非常重要:
“双引号”每个包含空格/元字符和每个扩展的文字:
"$var"
,"$(command "$var")"
,"${array[@]}"
,"a & b"
. 用于'single quotes'
代码或文字$'s: 'Costs $5 US'
,ssh host 'echo "$HOSTNAME"'
. 见
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words
推荐阅读
- java - 我需要使用 ffmpeg 转换音频文件,但出现错误
- screen-size - 如何在 dm 脚本中获取可用的屏幕尺寸
- html - Flask:引导选项卡
- javascript - IE默认版本自动更改为7
- google-apps-script - 与 Excel 和 VBA 相比,Google 表格和脚本真的很慢
- apache-flink - 如何知道作业是否从保存点恢复?
- android - 如何在不使用模拟位置的情况下在 android 上欺骗位置?
- html - 如何为 HTML 属性的值编写 string.format(...)?
- google-play-console - 为什么我在 Google Play 管理中心打开设置时顶部会显示错误?
- javascript - 使用 JS 将 HTML 中的 div 替换为 fetch() 数据