提问人:XYZ 提问时间:11/18/2023 最后编辑:Charles DuffyXYZ 更新时间:11/18/2023 访问量:46
如何在 Linux 命令中使用 eval if string conatins 特殊字符,例如 - [closed]
how to use eval in linux command if string conatins special character such as - [closed]
问:
我试过这个命令
eval('my-value')
但是这个错误
File "<string>", line 1, in <module>
NameError: name 'my' is not defined
但是如果我尝试
eval('myval')
我明白了
File "<string>", line 1, in <module>
NameError: name 'myval' is not defined
为什么它在第一个命令中以不同的方式读取 my 和 value?如何解决如果一个可变的名字conatins -
答:
1赞
NapoleonDynamite
11/18/2023
#1
(已编辑) 这显然不是 linux 命令吗?看来您是在 python 环境中而不是 shell。
如果是这种情况,您可能应该做类似的事情:
your_value = eval('myval')
好的,给定您的新上下文,您可以尝试在整个命令周围使用双引号,在 eval 中的字符串参数周围使用单引号,例如:
python -c "import my_module; my_module.my_function(eval('\"$var1\"'), eval('\"$var2\"'))"
根据需要更改 var1 和 var2
评论
0赞
XYZ
11/18/2023
不,我正在尝试执行此命令python -c “import my_module;my_module.my_function(eval('$var 1'), eval('$var 2'))“,var1 的值是 my-value,它显示文件”<string>“,第 1 行,在 <module>文件 ”<string>“,第 1 行,在 <module 中> NameError:未定义名称”my”
0赞
NapoleonDynamite
11/18/2023
我更新了我的答案:看看是否有帮助python -c "import my_module; my_module.my_function(eval('\"$var1\"'), eval('\"$var2\"'))"
0赞
XYZ
11/18/2023
非常感谢您了解我的背景
0赞
Charles Duffy
11/18/2023
你为什么要这样做,比如说,?(这也不是好的做法 - 远非如此 - 但是通过将内容注入到代码中嵌入为文本的字符串中,然后进行评估,而不是直接注入到代码中,您不会获得任何好处)。python -c "import my_module; my_module.my_function($var1, $var2)"
上一个:向条形图添加图案
评论
my
value