unix 中的 Eval 命令

unix 中的 Eval 命令

有人可以转换这个代码吗?我从网上得到这个。

最初,命令中有一个参数是加号 (+) 或减号 (-)。但由于我现在只需要添加(它不再在参数中),我希望它自动进行添加。

-|+) eval '(('jd2=${jd1}${5}${6}'))'
jd2date $jd2

答案1

代码是这样的吗?

case "$5" in
    -|+) eval '(('jd2=${jd1}${5}${6}'))' jd2date $jd2 
esac

如果是这样,您可以像这样调用命令:

script arg1 arg2 arg3 arg4 + 6

或者

script arg1 arg2 arg3 arg4 - 10

您也许可以使代码看起来像这样:

 eval '(('jd2=${jd1}+${5}'))' jd2date $jd2 

该命令的调用方式如下:

script arg1 arg2 arg3 arg4 10

${5}${6}${jd1}、 和$jd2被替换为其各自变量的内容。数字变量(例如$5$6)是位置参数

由于您不再需要将运算符放置在变量中,因此 eval不需要调用。您的代码可能如下所示:

 (( jd2=${jd1}+${5} ))
 jd2date $jd2

或者,使用稍微简洁的语法:

 (( jd2 = jd1 + $5 ))
 jd2date $jd2

答案2

我不确定您想通过代码片段实现什么目的,但这里有一个使用 eval 的示例以及与类似命令替换运算符的比较:

$ echo `echo 2 + 2 | bc`
4
$ echo $(echo 2 + 2 | bc)
4
$ eval "echo 2 + 2 | bc"
4
$ echo "date"
date
$ eval "date"
Thu Oct 10 21:20:01 EDT 2013

因此 eval “评估”一个命令或一系列命令,并返回运行该命令的结果。对于我的一生,eval除了直接运行命令或使用反引号或$(...)语法可以完成的操作外,我无法弄清楚任何用途。

相关内容