如何将 $SHELL 变量传递到 perl 搜索和替换中

2023-11-29

我有以下两个命令:

value=`grep -o Logs\/.*txt\" textFILE`
perl -i -wpe's/" onclick="img=document\.getElementById\('\''img_1'\''\); img\.style\.display = \(img\.style\.display == '\''none'\'' \? '\''block'\'' : '\''none'\''\);return false"/$value/' textFILE

然而,我不断得到Use of uninitialized value $value in concatenation (.) or string at -e line 1, <> line 56.错误。有人可以告诉我我做错了什么吗?


例如如下所示:

$ value=$(uname -r)
$ perl -e 'print "$value"'

当我们运行 Perl 来执行这里的代码时,我们不会将 shell 变量 $value 的内容发送到 Perl。我们发送文字字符串“$value”,然后 Perl 将尝试打印不存在的 Perl 变量 $value。

您可以通过以下两种方法来纠正此问题。

第一种方法是将 Perl 代码用双引号而不是单引号括起来,以便在发送到 Perl 时 $value 成为 shell 变量 $value 的内容,而不是文字字符串 '$value':

$ value=$(uname -r)
$ perl -e "print '$value'"
3.13.9-generic

然而,当使用此方法时,如果您有 Perl 变量以及此 shell 变量,您将需要“转义”Perl 变量,否则您将收到如下错误:

$ value=$(uname -r)
$ perl -e "$example = 'test'; print \"$value $example\";"
syntax error at -e line 1, near "="

使用 \'s 将纠正此问题:

$ value=$(uname -r)
$ perl -e "\$example = 'test'; print \"$value \$example\";"
3.13.9-generic test

其次,您可以通过将“值”导出到环境中,然后通过 Perl 程序中已有的 %ENV 哈希来访问它,从而避免将单引号更改为双引号(http://perldoc.perl.org/Env.html)。例如:

$ export value=$(uname -r)
$ perl -e 'print "$ENV{value}\n"'
3.13.9-generic

请注意您的环境,以免意外覆盖某些所需的环境变量。使用非常适合您的工作的命名约定可以帮助:

$ export MYPROGRAMNAME_KERNEL_VERSION=$(uname -r)
$ perl -e 'print "$ENV{MYPROGRAMNAME_KERNEL_VERSION}\n"'
3.13.9-generic

printenv大多数 Linux 系统上都会显示当前建立的环境变量。您也可以只使用 Perl 来检查 %ENV。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 $SHELL 变量传递到 perl 搜索和替换中 的相关文章

  • 将参数传递给调试器中的 perl 文件并在系统执行的文件中设置断点

    因此 我使用 perl d file pl 在 perl 调试器中运行一个文件 但 file pl 也应该接受参数 如何向 file pl 提供参数 还有一个问题 file pl 中有这一行 system file2 pl 如果 file2
  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR
  • 在 sed 命令和范围地址中使用不同的分隔符

    我在 shell 脚本中使用 sed 来编辑文件系统路径名 假设我想替换 foo bar with baz qux 然而 sed 的s 命令使用正斜杠 作为分隔符 如果我这样做 我会看到发出一条错误消息 例如 sed s foo bar b
  • 替换 JSON 中的转义字符

    我想用空格替换 JSON 字符串中的 字符 我怎样才能做到这一点 我发现从 JSON 字符串中删除所有转义字符的最简单 最好的方法是将字符串传递到正则表达式 Unescape 方法 此方法返回一个没有转义字符的新字符串 甚至删除了 n t
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 如何在 Perl 脚本中包含另一个文件中的函数?

    这似乎是一个非常简单的问题 但不知何故 我的 Google Fu 失败了 在 Perl 中包含其他文件中的函数的语法是什么 我正在寻找类似C的东西 include blah h 我看到了使用 Perl 模块的选项 但这似乎需要对我当前的代码
  • OpenSSL DH 密钥太小错误

    我正在尝试使用简单的 PERL 脚本连接到封闭的服务器 空调 usr bin perl use 5 10 1 use warnings use strict use IO Socket SSL use IO Socket SSL qw de
  • bash 变量中的 Linux 鞭尾/对话框参数错误

    有人可以解释为什么下面的代码不起作用吗 我要疯狂地想找出答案 bin bash TEST M1 1 wire Interface ON echo TEST RESULT dialog title Config Modules State c
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 我怎样才能挂钩 Perl 的 use/require 以便抛出异常?

    如果文件已经加载 是否可以挂载到use require所以我可以抛出异常 在我即将到来的nextgen blacklist http github com EvanCarroll nextgen blob blacklist lib nex
  • 将两个反斜杠替换为一个反斜杠

    我想用单个反斜杠替换带有两个反斜杠的字符串 但是 替换似乎不接受 作为替换字符串 这是解释器的输出 gt gt gt import tempfile gt gt gt temp folder tempfile gettempdir gt g
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • 如何用perl逐句读取文本文件?

    我想逐句读取文本文件 我的问题是下面的代码仅根据时期分开 usr bin perl use strict use warnings my file data txt open FILE file my buffer while my sen
  • 在 Ubuntu 中执行 .cgi 文件

    我在 Ubuntu 下运行 Apache PHP 当我运行 cgi 文件时 通过http localhost mycgi cgi 浏览器将显示代码而不是运行它 如何让浏览器执行 CGI 文件而不是显示其内容 将这些行添加到您的 apache
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 如何对 Data::Dumper 的输出进行排序?

    我想转储对象和散列的值 但它总是乱序打印键 如何按 递归 排序顺序转储键 use Data Dumper print Dumper obj Set Data Dumper Sortkeys 1获取 Perl 的默认排序顺序 如果要自定义顺序
  • Perl Parallel::Forkmanager 不允许收集变量值

    也许因为子进程不知道我的散列 请参阅下面的代码 散列 输出没有收集任何内容 除了写入 tmp 文件之外 还有其他方法来收集该值吗 foreach Item AllItems pid pm gt start Item and next Tem
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 在 bash 中使用单个命令为 shell 变量分配默认值

    我对 bash 3 00 shell 脚本中的变量进行了大量测试 如果未设置变量 则它会分配默认值 例如 if z VARIABLE then FOO default else FOO VARIABLE fi 我似乎记得有一些语法可以在一行

随机推荐

  • 使用正则表达式提取括号之间的文本

    在这样的句子中 x 阿尔法 33 贝塔 我提取一组括号内的数据作为 x 33 使用 VBA 正则表达式模式 x d 我无法直接将未括起来的数据数组提取为 x 33 使用网络资源建议进行模式 lt 这是 VBA 特定问题吗 即对其 Regex
  • Visual Studio Code - 如何向 python 路径添加多个路径?

    我正在尝试使用 Visual Studio Code 到目前为止 它看起来很棒 轻 快等 我正在尝试让我的 Python 应用程序之一运行 该应用程序使用虚拟环境 但也使用不在我的虚拟环境的站点包中的库 我知道在settings json
  • 公历到希伯来语

    如何将公历日期转换为等效的希伯来日期 另外请告诉我这些日历 因为我对此了解不多 有一个方便的类叫做NSCalendar 您可以像这样创建一个 NSCalendar gregorian NSCalendar alloc initWithCal
  • 自动 Killall 然后 Killall 9 级

    有时我想killall某个进程 但正在运行killall不起作用 因此 当我尝试再次启动该进程时 它会失败 因为前一个会话仍在运行 然后我就得无聊的跑killall 9在上面 所以为了简化我的生活 我创建了一个realkill脚本 它是这样
  • java.io.FileNotFoundException:(访问被拒绝)

    我试图读取文件夹内的文件 但是当我运行程序时它会抛出此异常 我也尝试过其他一些文件夹 它抛出相同的异常 Exception in thread main java io FileNotFoundException C backup Acce
  • Delphi 中重复直到中使用的函数 Sleep() 的奇怪行为

    我的功能是单击按钮时的反应 当我单击按钮时 它应该开始重复并写入数组中的值 并将它们显示在主窗体的标签中 问题在于功能睡眠 有一些错误或其他原因 因为当我单击按钮时 它等待了很长一段时间 然后它最终开始执行操作 但速度很快 让我们看看我的代
  • JavaScript 缩放整个 Div

    我正在寻找一个可以放大整个 div 的 JQuery 脚本 我找到了以下插件 http test dpetroff ru jquery iviewer test and 这些插件正是我需要的东西 只需用滚轮放大和缩小 但我有一个问题 我需要
  • npm install 在出现如此多的警告后给出错误

    我的 ReactJS 项目直到上周都运行良好 但从周日开始 它在 npm install 上出现以下错误 PS C Projects Interface ClientApp gt npm install npm WARN deprecate
  • 如何使用IpropertyStorage读取文件的属性?

    如何使用 iPropertyStorage 读取文件的属性 如标题 作者 页数等 谁知道c 中的代码请发布它 实际上 我正在尝试以编程方式 使用 c 读取文件属性 标题 摘要 作者 注释等 当您看到文件的属性时 摘要 选项卡上显示的内容 F
  • 事务回滚,但插入一条记录

    大家好 我已经使用 jsf spring 3 0 hybernate JPA 和atomikos 进行了 XA 交易管理 mysql 是我的后端 这里一切正常 但是插入操作 当异常抛出时 交易应该回滚 但是它没有发生 这是我们应用程序的一个
  • 使用jquery附加vue js组件

    我正在尝试动态附加vue使用 jquery 将组件添加到我的应用程序中 但什么也没有发生 附加元素没有渲染 div div 我想要的结果是附加时
  • HSM 和自定义模块

    我们正在实施安全关键系统 其中FIPS 140 2需要兼容的 HSM 硬件安全模块 来生成和存储密钥材料 执行加密 解密以及运行自定义代码 并为自定义模块设置以下要求 模块可通过 RPC 访问 模块可以访问所有 HSM 密钥和服务 模块具有
  • php shell命令错误GLIBCXX_3.4.9未找到

    我试图从 php 执行 shell 命令将文件转换为 pdf 但出现此错误 有人可以详细解释我如何修复它吗 我不太擅长linux 而且 如果我直接通过终端执行命令 一切都会正常 usr lib libreoffice program oos
  • 我为什么可以在 std::vector 中使用前向声明的类?

    我认为您只能创建指向前向声明类的引用或指针成员 然而 我惊讶地发现这个有效 include
  • 在 GAE 上使用 boto3 - 遇到 Popen 问题

    我正在尝试在 Google App Engine 中运行一些 python 代码 该代码向 Amazon SQS 发送消息 我已经安装了 boto3 但在尝试将其导入我的 AppEngine 服务时遇到错误 File base data h
  • 使用 R 中的 Match 函数查找“第一次出现”

    我是 R 和 Stackoverflow 的新手 所以请原谅我提出这个非常基本的问题 我正在尝试在我的数据集中找到第一个女性的 索引 代码快照 我的整个数据集称为 自行车 所以首先我认为分配一个仅包含性别的新向量是个好主意 bike gen
  • 使用填充堆叠不同长度的 Numpy 数组

    a np array 1 2 3 b np array 4 5 l a b 我想要一个功能stack padding这样 assert stack padding l np array 1 2 3 4 5 0 numpy 是否有实现的标准方
  • Prolog 将分钟转换为小时

    这是我创建的代码 mins to hours In H M In lt 60 H 0 M is In mins to hours In H M In gt 60 H is H1 1 In1 is In 60 mins to hours In
  • jQuery AJAX 请求 302 重定向 - 哪些回调可用?

    我正在使用一个使用 jQuery 1 2 6 的旧系统 我正在通过以下方式发送 AJAX 请求jQuery ajax功能 它所访问的 URL 正在发送 302 HTTP 重定向响应 并最终以 200 HTTP OK 响应结束 我已经注册了两
  • 如何将 $SHELL 变量传递到 perl 搜索和替换中

    我有以下两个命令 value grep o Logs txt textFILE perl i wpe s onclick img document getElementById img 1 img style display img sty