Bash采用其他语言的功能

时间:2010-05-08 18:14:17

标签: bash

这也许是一个愚蠢的问题,但这是我想知道的:是否可以定义Ruby / Python / Perl /等。在某个文件中运行,然后在Bash中获取它(使其在当前shell中的任何位置都可用)?

目前,我通过创建执行该脚本的bash别名来“源”其他语言的脚本/函数......但我想知道Bash是否可以直接解释其他函数?

2 个答案:

答案 0 :(得分:1)

不,这样做并不容易!

你可以编写一些知道如何在给定文件中执行给定函数的东西(使用语言的解释器),但这超出了bash:)

答案 1 :(得分:1)

不是很难。您必须利用该语言的功能来指定要运行的代码。弄清楚如何逃避代码和输入是棘手的。但它可行:

# source-lang.sh: define some bash functions that call other languages
perl_sqrt()
{
    export operand=$1
    perl <<'EOF'
        print sqrt($ENV{operand}),"\n"
EOF
}

python_log()
{
    a=$1
    b=$2
    if [ "$b" = "" ] ; then
    b=$a
    a=10
    fi
    python <<EOF
import math
c = math.log($b) / math.log($a)
print c
EOF
}

$ source source-lang.sh
$ perl_sqrt 289
17
$ python_log 2 128
7.0
$ f=`perl_sqrt 1024`
$ echo $f
32