linuxeval
如果是bash,可以用indirect expansion来搞,语法为 ${!var}。
比如
foo=bar
bar=123
echo ${!foo}
会打印 123
再比如下面的脚本,依次打印脚本的各个输入参数。
#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is ${!var}"
let var++
done
不用indirect expansion,也可以用 eval, 比如
#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done
2. linux上安装了pyv8 执行execjs的时候想用pyv8的环境去执行,但是 运行的时候 说找不到js的运行环境怎么办
pyv8 的作用是在python中执行js代码,然后可以使用js里的变量等内容。python取得javascript里面的值、javascript取得python里面的值、python和javascript里面的函数交互
mac下的安装:pip install -e git://github.com/brokenseal/PyV8-OS-X#egg=pyv8
安装后有两个文件:一个PyV8.py 另一个_PyV8.so
下面示例是执行js文件
from pyv8 import PyV8
ctxt = PyV8.JSContext()
ctxt.enter()
with open('/usr/graph.js') as f:
jsdata = f.read() # print jsdata
print ctxt.eval(jsdata)
下面是执行一段代码
import PyV8
ctxt = PyV8.JSContext()
ctxt.enter()
func = ctxt.eval("""
(function(){
function hello(){
return "Hello world.";
}
return hello();
})""")print func()
则在python环境中打印出js执行的结果:Hello world.
更多信息可参考《Linux就该这么学》