unix - 使用变量替换 shell 脚本中的字符串

标签 unix shell sed

我正在使用下面的代码来替换字符串 在 shell 脚本中。

echo $LINE | sed -e 's/12345678/"$replace"/g'

但它被替换为 $replace 而不是该变量的值。

谁能告诉我出了什么问题吗?

最佳答案

如果您想解释$replace,则不应使用单引号,因为它们会阻止变量替换。

尝试:

echo $LINE | sed -e "s/12345678/${replace}/g"

文字记录:

pax> export replace=987654321
pax> echo X123456789X | sed "s/123456789/${replace}/"
X987654321X
pax> _

请小心确保 ${replace} 没有任何对 sed 有意义的字符(例如 /)因为除非逃脱否则会引起困惑。但如果正如您所说,您将一个数字替换为另一个数字,那应该不成问题。

关于unix - 使用变量替换 shell 脚本中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306007/

相关文章:

linux - 在所有子目录中的特定文件上运行脚本

shell - 更改文件名后缀(使用 sed ?)

xml - 如何从 bash 中的 pom 文件中删除版本号

linux - 使用 find 命令删除目录集,而不会遇到参数列表太长的情况

linux - 使用 AWK 替换列值

javascript - 每次目录中有 .nvmrc 文件时自动运行 `nvm use`

linux - Bourne Shell (bin/sh) 中的嵌套变量

regex - 如何使用 bash 脚本和 sed 将字符串替换为换行符?

java - 比较下载文件与 ftp 服务器上的远程文件的文件大小

c - 通过 Bash 脚本在 C 文件中查找 "main"函数名称