如何在Bash脚本中将变量内的&替换为+并重新赋值
如何在Bash脚本中将变量内的&替换为+并重新赋值
嘿,我懂你想要个简单直接的解决办法,不想扯那些长篇大论的通用知识——完全理解你的需求!
你之前尝试的写法有两个小问题:一是Bash里赋值变量不能在变量名前加$(那是取值的写法);二是tr命令需要通过命令替换来捕获输出,直接用管道连变量赋值是行不通的。
给你两种简单有效的实现方式:
方法一:用Bash内置的参数替换(推荐)
这是最高效的方式,不需要调用外部命令,直接用Bash的字符串处理功能:
targetDir="&&&&&" echo $targetDir # 输出 &&&&& # 全局替换所有&为+ targetDir="${targetDir//&/+}" echo $targetDir # 输出 +++++
语法解释:${变量//旧字符串/新字符串} 表示全局替换变量里所有匹配的旧字符串;如果只写一个/,比如${targetDir/&/+},只会替换第一个匹配的&。
方法二:用tr命令配合命令替换
如果你坚持想用tr,可以这样写,通过命令替换捕获tr的输出重新赋值:
targetDir="&&&&&" echo $targetDir # 输出 &&&&& # 注意要给变量加双引号,避免特殊字符被拆分 targetDir=$(echo "$targetDir" | tr '&' '+') echo $targetDir # 输出 +++++
两种方法都能达到你要的效果,推荐用第一种,因为内置操作更快,也更简洁。
备注:内容来源于stack exchange,提问作者Craig Wilcox
相关产品推荐
相关产品推荐

