当前位置: 首页 > 面试题库 >

sed中的环境变量替换

唐海阳
2023-03-14
问题内容

如果我从脚本运行以下命令:

#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部分进行“引用”,以便不直接替换该部分,这是我所做的,并且仅当该变量在紧接之前定义时才起作用。

我如何被s识别$var为shell中定义的环境变量?


问题答案:

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

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

  2. $PWD可能包含一个斜杠,在这种情况下,您需要查找一个 包含在其中的字符$PWD用作定界符。

同时解决这两个问题

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


 类似资料:
  • 问题内容: Jenkins(管理jenkins->系统信息)下的环境变量从何而来? 我检查了/etc/init.d/tomcat5,/ usr / bin / dtomcat5,/ usr / bin / tomcat5,/ etc / sysconfig / tomcat5和/ etc / profile,但在那里没有看到任何此类变量,特别是与Oracle相关的变量(Base,Home,Ld_l

  • Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。 全局行为 像通常的程序一样,Git 的常规行为依赖于环境变量。 GIT_EXEC_PATH 决定 Git 到哪找它的子程序 (像 git-commit

  • Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。 HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。

  • 环境变量 vue-element-admin 4.0 之后是基于 vue-cli来进行构建,所以所有的环境变量配置都是基于vue-cli来实现和控制的。 官方文档 .env # 在所有的环境中被载入 .env.[mode] # 只在指定的模式中被载入 一个环境文件只包含环境变量的“键=值”对: FOO=bar VUE_APP_SECRET=secre

  • 一些 Electron 的行为受到环境变量的控制,因为他们的初始化比命令行和应用代码更早. POSIX shells 的例子: $ export ELECTRON_ENABLE_LOGGING=true $ electron Windows 控制台: > set ELECTRON_ENABLE_LOGGING=true > electron ELECTRON_RUN_AS_NODE 类似nod

  • 设置变量,可以不必更改代码的控制应用程序配置和行为。 某些Electron行为由环境变量控制,因为它们比命令行和代码更早地初始化。 POSIX shell示例: 1 $ export ELECTRON_ENABLE_LOGGING=true 2 $ electron Copied! Windows控制台示例: 1 > set ELECTRON_ENABLE_LOGGING=true 2 > ele