我一直在试图evaulate函数内的表达式如下:
eval "fn() { $(cat fn.sh); }"
凡fn.sh包含以下内容:
#!/bin/sh
echo "You provided $1."
所以,当我打电话:
fn "a phrase"`
它打印“你提供了一个短语”。 但是我不能让它开始工作。
什么是特别令人沮丧的是:
eval "$(cat fn.sh)"
完美的作品! 我缺少的是在这里吗?
我已经试过:
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
和无数其他的组合,其在这一点上大部分是猜测。