代码之家  ›  专栏  ›  技术社区  ›  ABach

其他语言功能的bash源代码

  •  1
  • ABach  · 技术社区  · 15 年前

    这也许是一个愚蠢的问题,但我想知道的是:是否可以在某个文件中定义ruby/python/perl/etc.函数,然后将其源于bash(使其在当前shell中的任何位置都可用)?

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

    2 回复  |  直到 9 年前
        1
  •  1
  •   mob    15 年前

    它不是 那个 很难。您必须利用语言的特性来指定要运行的代码。弄清楚如何转义代码和输入是很困难的。但它是可行的:

    # 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
    
        2
  •  1
  •   LukeN    15 年前

    不,这样做不容易!

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