使用 Bash 替换变量中的字符串

X3n*_*ion 14 string variables bash replace

我想替换变量中的字符串,例如:

Test=Today, 12:34
Run Code Online (Sandbox Code Playgroud)

我想用我之前声明的变量替换Test变量中的“今天”。Date

我尝试使用sed命令:

sed -i -e "s/Today/$Date" '$Test'
Run Code Online (Sandbox Code Playgroud)

但它只会打印出错误并且文件'$Test'未知。只能使用sed文本文件吗?

Pau*_*ges 13

首先,这是一个语法错误。

$: Test=Today, 12:34
bash: 12:34: command not found
Run Code Online (Sandbox Code Playgroud)

加上一些引用。

$: Test="Today, 12:34"
$: Test='Today, 12:34'
$: Test=Today,\ 12:34
Run Code Online (Sandbox Code Playgroud)

然后你可以使用bash内置的参数扩展

$: Test='Today, 12:34'
$: Date=12.12.2000
$: Test="${Test/Today/$Date}"
$: echo "$Test"
12.12.2000, 12:34
Run Code Online (Sandbox Code Playgroud)


The*_*ter 8

这对我有用:

Test="Today, 12:34"
Date=12.12.2000
sed 's/Today/'"$Date"'/g' <<<"$Test"
Run Code Online (Sandbox Code Playgroud)

编辑:如果您想更改变量 Test,如评论中提到的,您需要分配:

Test="Today, 12:34"
Date=12.12.2000
Test=$(sed 's/Today/'"$Date"'/g' <<<"$Test")
Run Code Online (Sandbox Code Playgroud)