相关疑难解决方法(0)

bash 中的“eval”命令是什么?

你可以用eval命令做什么?为什么有用?它是 bash 中的某种内置函数吗?没有man它的页面。。

shell bash eval

261
推荐指数
7
解决办法
65万
查看次数

条件管道

假设我有以下管道:

cmd1 < input.txt |\
cmd2 |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt
Run Code Online (Sandbox Code Playgroud)

在某些条件下,我想cmd3cmd2和之间添加一个cmd4。有没有办法创建一种条件管道而不将结果保存cmd2到临时文件中?我会想到这样的事情:

cmd1 < input.txt |\
cmd2 |\
(${DEFINED}? cmd3 : cat ) |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt
Run Code Online (Sandbox Code Playgroud)

shell pipe shell-script

51
推荐指数
6
解决办法
2万
查看次数

${@:$#} 究竟是什么?

我试图运行echo ${@:$#},它与我当前的 shell 相呼应。

我发现echo ${#}回声0。

我没有找到有关结果的任何资源。

我试图理解那部分,所以我可以理解我想使用的 docker 脚本。脚本是:

alias enhance='function ne() { docker run --rm -v "$(pwd)/`dirname ${@:$#}`":/ne/input -it alexjc/neural-enhance ${@:1:$#-1} "input/`basename ${@:$#}`"; }; ne'
Run Code Online (Sandbox Code Playgroud)

shell bash shell-script arguments

14
推荐指数
1
解决办法
1347
查看次数

为什么以及何时应该在 shell 脚本中避免使用 eval?

该站点上的许多答案和评论都提到通常应避免eval在 shell 脚本中使用。这些评论通常是针对初学者的。

我已经看到提到安全问题和健壮性,但很少有例子。

我已经明白命令什么,以及如何使用它eval。但是,那里给出的答案仅简要提及使用eval. 值得注意的是,每个答案都指出这eval可能是一个主要的安全漏洞,但大多数只是将这一事实作为结束语而没有详细说明。这似乎值得进一步考虑,实际上是它自己的问题。

为什么eval一个坏主意?

它适当地使用?

是否有任何指导方针可以完全安全地使用它,或者它总是不可避免地存在安全漏洞?


编辑:这篇文章是我在发布这个问题时实际寻找的那种规范参考(答案)。任何滥用的人eval都可以指向此参考。

shell-script eval

8
推荐指数
2
解决办法
9050
查看次数

标签 统计

shell ×3

shell-script ×3

bash ×2

eval ×2

arguments ×1

pipe ×1