linux - sed 中的环境变量替换

如果我从脚本运行这些命令:

#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla

没关系。

但是,如果我运行:

#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s' 

我在教程中读到,要从 shell 替换环境变量,您需要停止,并“引用” $varname 部分,这样它就不会被直接替换,这就是我所做的,并且仅当变量在之前定义时才有效。

如何让 sed 将 $var 识别为环境变量,因为它是在 shell 中定义的?

最佳答案

您的两个示例看起来相同,这使得问题难以诊断。潜在问题:

  1. 您可能需要双引号,如 sed 's/xxx/'"$PWD"'/'

  2. $PWD 可能包含斜杠,在这种情况下,您需要找到 $PWD 中包含的字符 not 才能使用作为分隔符。

也许同时解决这两个问题

sed 's@xxx@'"$PWD"'@'

https://stackoverflow.com/questions/584894/

相关文章:

python - 如何一次检查多个键是否在一个字典中?

python - 将数字四舍五入到最接近的整数

linux - 如何找出目录或文件所在的挂载/分区? (Linux 服务器)

python - 如何使 Python 脚本像 Linux 中的服务或守护程序一样运行

python - 如何查找我的系统中安装了哪个版本的 TensorFlow?

linux - 退出 bash 脚本但不退出终端的任何方式

python - 何时使用 Tornado,何时使用 Twisted/Cyclone/GEvent/

linux - 如何杀死僵尸进程

c - errno 是线程安全的吗?

python - 如何根据任意条件函数过滤字典?