本文介绍了函数内部的评估猫的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试在函数内撤消表达式,如下所示:

I've been trying to evaulate an expression inside a function as follows:

eval "fn() { $(cat fn.sh); }"

其中 fn.sh 包含以下:

#!/bin/sh
echo "You provided $1."

所以当我打电话时:

fn "a phrase"`

它会显示您提供了一个短语。。但是我无法使其正常工作。

it prints "You provided a phrase.". However I cannot get it to work.

特别令人沮丧的是:

eval "$(cat fn.sh)"

效果很好!我在这里想念什么?

works perfectly! What am I missing here?

我尝试过的事情:

eval "fn() { \"\$(cat fn.sh)\"; }"
fn
# bash: #!/bin/sh
# echo "You provided $1."
# return 1: No such file or directory

eval "fn() { \$(cat fn.sh); }"
fn
# bash: #!/bin/sh: No such file or directory

和无数其他组合,其中大多数

and myriad other combinations, most of which at this point is guess work.

推荐答案

找到答案:

eval "fn() { eval \"\$(cat "fn.sh")\"; }"

必填尽可能地解释了我所理解的使用 eval 的安全风险。

这篇关于函数内部的评估猫的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!