源操作符在bash中的括号内不起作用

时间:2010-05-04 12:32:44

标签: bash if-statement include sh

我想在我的bash脚本中包含一个配置文件,其中包含两个条件:

  1. 配置文件名即时构建并存储在变量中,
  2. 如果配置文件不存在,脚本应该失败:
  3. 的config.cfg:

     CONFIGURED=yes
    

    test.sh:

    #!/bin/sh
    $CFG=config.cfg
    
    echo Source command doesn't work here:
    [ -f $CFG ] && ( source $CFG ) || (echo $CFG doesnt exist; exit 127)
    echo $CONFIGURED
    
    echo ... but works here:
    source $CFG
    echo $CONFIGURED
    

    [...]声明中有什么问题?

1 个答案:

答案 0 :(得分:7)

( ... )在单独的子shell中运行命令。如果您想在可能的情况下在同一个shell中运行命令,请改用{ ... ; }