在Linux中使用eval命令作为命令运行变量

eval命令允许您将变量的内容作为命令运行,并且非常有用,尤其是在脚本中。

  • 在脸书上分享
  • 分享到Twitter
  • 分享LinkedIn
  • 分享Reddit
  • 通过电子邮件分享
  • 打印资源

可能有很多Linux用户从未遇到过评估命令。实际上,这不是真正的“命令”,而是内置的狂欢这是为了处理变量的值作为命令。例如,如果您设置了一个包含命令以显示当前时间在澳大利亚悉尼的变量,则可能看起来像这样:

$ dt =“ tz ='澳大利亚/悉尼的日期”

然后,您可以这样运行:

$评估$ DT

星期四706:32:14 AM AEST 2022

这样做可以为您节省记忆的麻烦日期命令语法并指定一个时区,但让我们更仔细地看一下评估看看它还可以为您做什么。

Bash Man页面会告诉您一些有关评估命令,尽管您必须向下滚动近5,000行才能找到它。毕竟,没有人页面的内置页面。这就是它告诉您的:

args被读取并串联成一个单一的com-

命令。然后由外壳读取和执行此命令,并执行

它的退出状态将作为评估的价值返回。如果有

没有ARGS,或仅零论点,eval返回0。

当然,对于您通过在终端窗口中键入命令所做的任何事情,评估不太可能为您节省很多时间或精力。毕竟,您可以创建一个别名为您做同样的工作。这是这样的外观:

$别名DT =“ TZ ='澳大利亚/悉尼'日期”

$ dt

星期四706:37:31 AM AEST 2022

将该别名保存在.bashrc文件中,并且您可以轻松地检查悉尼的时间,只要您感到渴望。

但是,当您将复杂的命令构成零件时(尤其是在运行时需要收集必要数据的脚本中)评估运行命令可以使运行命令变得更加容易。

例如,在进行工作时最近的脚本,我需要找到长五个字母的单词,在已知位置和其他特定字母的特定字母中,处于不确定的位置。我还知道我需要找到的单词中没有包含许多字母。逐步,该脚本构建了一条长字符串格雷普命令浏览单词文件以仅查找适合我规格的单词。这是这样的命令的示例格雷普(匹配)及其grep -v(忽略)命令及其发现的比赛:

$ grep ^ch..t $/usr/share/dict/单词|eval grep -v'q'|grep -v'W'|grep -v'r'|grep -v'y'|grep -v'u'|grep -v'i'|grep -v'o'|grep -v'p'|grep -v's'| grep -v 'd' | grep -v 'f' | grep -v 'g' | grep -v 'j' | grep -v 'k' | grep -v 'l' | grep -v 'z' | grep -v 'x' | grep -v 'v' | grep -v 'b' | grep -v 'n' | grep -v 'm' | grep a | grep e | grep -v ..a.. | grep -v ...e.

欺骗

实际上,如果您使用单词文件运行该命令,则应得到相同的响应。如果将其变成如下所示的变量,则将其工作相同。

$ cmd =“ grep ^ch..t $/usr/share/share/dict/dist | grep -v'q'| grep -v'w'| grep -v'r'| grep -v'y'y'| grep-v'U'| grep -v'i'| grep -v'o'| grep -v'p'| grep -v's's'| grep -v'd'| grep -v'f'| grep -v -v'g'| grep -v'j'| grep -v'k'| grep -v'l'| grep -v'z'| grep -v'x'x'| grep -v'v'v'| grep -v'b'| grep -v'n'| grep -v'm'| grep a | grep e | grep -v .. a .. | grep -v ... e。

$评估$ CMD

欺骗

我的脚本使用评估运行$ cmd变量作为命令,并将输出传递给柱子当有数十个或数百个匹配单词时,命令使输出更有用。显示的示例中的结果是单词文件中的近半百万行中摘下的单词“作弊”。我需要做的就是回答有关我所知道和不知道的几个问题。

评估$ CMD |柱子

包起来

评估命令可用于运行作为变量保存的简单或非常复杂的命令。它在变量中评估命令和参数,然后执行它们。当您构建长而复杂的命令时,这是最有用的 - 尤其是在脚本中,详细信息取决于在运行脚本时更改或响应的数据时。

联合国。

加入网络世界社区有个足球雷竞技appFacebookLinkedIn评论最重要的主题。
有关的:

版权所有©2022 IDG ComRaybet2munications,Inc。