【发布时间】:2020-12-21 17:55:41
【问题描述】:
我想替换变量中的字符串,例如
Test=Today, 12:34
我想用我之前声明的日期变量替换变量 Test 中的“今天”。
我尝试使用“-sed”命令,
sed -i -e "s/Today/$Date" '$Test'
但它只会打印出一个错误并且文件'$Test'是未知的。那么使用 sed 只能使用文本文件吗?
亲切的问候, X3nion
【问题讨论】:
-
$Test不是文件。您可以使用:sed '....' <<< "$Test"或更好地在 bash 中使用"${Test/Today/$Date}" -
除了@anubhava 所说的,请注意在bash 中,单引号中的变量扩展不起作用。如果要扩展 Test 变量,可以不加引号
$Test或将其放在双引号"$Test"中。如果您使用单引号,它将被视为字符串文字。 -
当我只写命令“${Test/Today/$Date}”时,这不起作用。我错过了什么?
-
"${Test/Today/$Date}"不是命令,而是生成字符串的表达式。您需要对该字符串执行一些操作,例如为其设置一个变量(Test="${Test/Today/$Date}"将用修改后的版本替换Test的当前值)、打印它(echo "${Test/Today/$Date}")或类似的东西。
标签: string bash variables replace