hell 如何在bash脚本中连接两个字符串变量

 我来答
折柳成萌
高粉答主

2018-06-14 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:5992万
展开全部

bash在一个脚本里引用另一个脚本定义的变量有3种方法:

  • fork  ( /directory/script.sh)

    fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.

    运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在。

    sub-shell执行完毕后返回parent-shell. sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell

  • exec (exec /directory/script.sh)

    exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本.  被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别

  • source (source /directory/script.sh)

    与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用.

  • 可以通过下面这两个脚本来体会三种调用方式的不同:

    1.sh 

    #!/bin/bash

    A=B

    echo "PID for 1.sh before exec/source/fork:$$"

    export A

    echo "1.sh: \$A is $A"

    case $1 in

    exec)

    echo "using exec…"

    exec ./2.sh ;;

    source)

    echo "using source…"

    . ./2.sh ;;

    *)

    echo "using fork by default…"

    ./2.sh ;;

    esac

    echo "PID for 1.sh after exec/source/fork:$$"

    echo "1.sh: \$A is $A"

    2.sh 

    #!/bin/bash

    echo "PID for 2.sh: $$"

    echo "2.sh get \$A=$A from 1.sh"

    A=C

    export A

    echo "2.sh: \$A is $A"

    执行情况:

    $ ./1.sh    

    PID for 1.sh before exec/source/fork:5845364

    1.sh: $A is B

    using fork by default…

    PID for 2.sh: 5242940

    2.sh get $A=B from 1.sh

    2.sh: $A is C

    PID for 1.sh after exec/source/fork:5845364

    1.sh: $A is B

    $ ./1.sh exec

    PID for 1.sh before exec/source/fork:5562668

    1.sh: $A is B

    using exec…

    PID for 2.sh: 5562668

    2.sh get $A=B from 1.sh

    2.sh: $A is C

    $ ./1.sh source

    PID for 1.sh before exec/source/fork:5156894

    1.sh: $A is B

    using source…

    PID for 2.sh: 5156894

    2.sh get $A=B from 1.sh

    2.sh: $A is C

    PID for 1.sh after exec/source/fork:5156894

    1.sh: $A is C

    $

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式