【发布时间】:2012-05-16 17:04:06
【问题描述】:
我试图了解 eval 语句的工作原理。这是我正在看的一段我不明白的代码:
eval `$SOME_DIR/util/dbget.pl \
VARIABLE1 \
VARIABLE2 \
VARIABLE3 \
VARIABLE4 `
无论如何,经过一些研究,我最初的想法是 eval 只是在命令行中逐字键入这些字符串,这意味着它运行 .pl 脚本,然后......我不确定它对这些变量做了什么。此代码上方的注释说“获取一些参数”,但我不确定这意味着什么。
eval 'VARIABLE' 是否初始化变量?这似乎是这种情况,因为在 eval 之后代码继续使用这些变量,就好像它们现在已初始化(是否执行 if 语句检查等)。
我显然是这种脚本的新手,只是跳入了一个大型存储库。谢谢你的帮助。
【问题讨论】:
-
用
set -vx开启shell 调试(我认为这对csh 来说是正确的)。然后您可以在不同的处理步骤中查看变量的值。祝你好运。 -
反引号位于键盘的左上角,紧挨着 1 键(通常)。祝你好运。
-
在基于 Debian 的系统上,
csh中有一个严重的错误:eval总是因分段错误而死。它不影响tcsh。/bin/csh可以是 bsd-csh 或 tcsh。 bugs.debian.org/cgi-bin/bugreport.cgi?bug=933057