Tag: eval

如何修改bash中的函数内的全局variables?

我正在处理这个问题: GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 我有一个像下面的脚本: #!/bin/bash e=2 function test1() { e=4 echo "hello" } test1 echo "$e" 哪个返回: hello 4 但是如果我把函数的结果赋值给一个variables,全局variablese就不会被修改: #!/bin/bash e=2 function test1() { e=4 echo "hello" } ret=$(test1) echo "$ret" echo "$e" 返回: hello 2 在这种情况下,我听说过使用eval ,所以我在test1做了这个: eval 'e=4' 但是同样的结果。 你能解释一下为什么它没有被修改? 我怎样才能将ret1中的test1函数的回声保存起来,并修改全局variables呢?

了解ASP.NET Eval()和Bind()

任何人都可以看到一些绝对最小的ASP.NET代码来理解Eval()和Bind()吗? 如果您向我提供两个单独的代码片段或者可能是networking链接,则最好。

以严格模式间接评估

我了解eval()如何在非严格的上下文中工作,但在严格模式下使用eval()的情况已经完全困惑了我。 当在全局范围中直接调用eval() ,variables将保留在新的eval()范围内: 'use strict'; eval('var a = 1;'); console.log(a); // ReferenceError: a is not defined 但是,如果我在全局范围内对eval()进行间接调用(应该是相同的东西,对吗?),它的行为好像不是严格模式(如果您不相信我,请参阅此JSFiddle ) : 'use strict'; (0, eval)('var a = 1;'); // indirect call to eval console.log(a); // 1??? 如果你不明白什么(0, eval) ,请参阅谷歌主页为什么使用(0,obj.func)(args)语法? 。 至less根据我对eval()应该如何在严格模式下工作的理解,意思是(无论是直接还是间接调用eval()为eval()调用中定义的variables创build一个新的作用域,然而这似乎并不是这种情况。 规范说明如下: 10.4.2input评估代码 当控制进入eval代码的执行上下文时,执行以下步骤: 如果没有调用上下文,或者如果eval代码没有被直接调用( 15.1.2.1.1 )评估到eval函数,那么, 一个。 如10.4.1.1所述,使用eval代码作为C初始化执行上下文,就好像它是全局执行上下文一样。 其他, 一个。 将ThisBinding设置为与调用执行上下文的ThisBinding相同的值。 湾 将LexicalEnvironment设置为与调用执行上下文的LexicalEnvironment相同的值。 C。 将VariableEnvironment设置为与调用执行上下文的VariableEnvironment相同的值。 如果eval代码是严格的代码 […]

在JavaScript中像在Eval一样在VB.NET中做math运算

有没有什么办法来parsing一个string在vb.net(就像内置的方法),可以做像Eval的math可以? 例如,3+(7 / 3.5)作为string将返回2。 我不是要求你为我编码,我只是想知道是否有内置的方法来做到这一点,如果没有,我会自己编码。 我敢打赌,它不能像Sin(90)那样自行parsing,我知道这需要被Math.Sin(90)所取代。 如果有内置的方法,你如何使用它?

在bash中间接variables赋值

似乎在bash中进行间接variables设置的推荐方法是使用eval : var=x; val=foo eval $var=$val echo $x # –> foo 问题是通常与eval : var=x; val=1$'\n'pwd eval $var=$val # bad output here (因为在很多地方都推荐它,所以我想知道有多less个脚本因为这个而变得脆弱) 在任何情况下,使用(转义)引号的显而易见的解决scheme实际上并不工作: var=x; val=1\"$'\n'pwd\" eval $var=\"$val\" # fail with the above 事情是,bash有间接variables引用(在${!foo} ),但我没有看到任何这样的方式来进行间接赋值 – 有没有什么理智的方法来做到这一点? 为了logging,我find了一个解决scheme,但这不是我认为是“理智”的东西…: eval "$var='"${val//\'/\'\"\'\"\'}"'"

为什么{} + {}只能在客户端使用NaN? 为什么不在Node.js中?

当[] + []是空string时, [] + {}是"[object Object]" , {} + []是0 。 为什么是{} + {} NaN? > {} + {} NaN 我的问题不是为什么({} + {}).toString()是"[object Object][object Object]"而NaN.toString()是"NaN" , 这部分已经有答案了 。 我的问题是为什么这只发生在客户端? 在服务器端( Node.js ) {} + {}是"[object Object][object Object]" 。 > {} + {} '[object Object][object Object]' 总结 : 在客户端: [] + [] // Returns "" […]

在一个string中执行PHP代码

我有我的页面内容保存在数据库中,并希望执行string中的任何PHP代码。 所以如果我的string是: <h1>Welcome</h1><?php echo $motto?><br/> 我只想执行echo $motto 。 使用eval()将尝试执行<h1>Welcome</h1> 。 任何方式来做到这一点?

在Bash中的eval命令及其典型用法

在阅读bash手册页并就此post 。 我仍然无法理解eval命令究竟做了什么,以及哪个是它的典型用法。 例如,如果我们这样做: bash$ set — one two three # sets $1 $2 $3 bash$ echo $1 one bash$ n=1 bash$ echo ${$n} ## First attempt to echo $1 using brackets fails bash: ${$n}: bad substitution bash$ echo $($n) ## Second attempt to echo $1 using parentheses fails bash: 1: command not found bash$ […]

将string转换为模板string

是否有可能创build一个模板string作为一个通常的string let a="b:${b}"; 然后将其转换为模板string let b=10; console.log(a.template());//b:10 没有eval , new Function和其他dynamic代码生成手段?

从另一个Python脚本调用Python脚本的最好方法是什么?

我有一个名为test1.py的脚本,它不在模块中。 它只有脚本本身运行时应该执行的代码。 没有函数,类,方法等我有另一个脚本作为服务运行。 我想从作为服务运行的脚本调用test1.py。 例如: 文件test1.py print "I am a test" print "see! I do nothing productive." 文件service.py # Lots of stuff here test1.py # do whatever is in test1.py 我知道有一种方法是打开文件,阅读内容,并基本评估它。 我假设有一个更好的方法来做到这一点。 或者至less我希望如此。