在shell脚本中导出因变量失败

时间:2017-12-15 07:20:18

标签: bash shell

我有三个shell脚本文件,一个名为“VER”的全局变量,其值为“2017.4”
 变量.sh  2. function.sh
 3. main.sh

variable.sh
var1=/home var2=/home/${VER}_version

function.sh
包含一个名为export_function的函数,它将一个变量作为参数,执行grep操作以从 variable.sh 文件中查找该变量并导出grep输出

export_function () {
    var=`grep "$1=" variable.sh | sed -e "s/"$1="//g"`
    export $1=$var
}

main.sh

source function.sh
export_function var2
echo "$var2"

当我运行main.sh时,获取输出:/home/${VER}_version而不是/home/2017.4_version

注意:main.sh中的echo $ VER和function.sh显示值2017.4

约束:

  1. variable.sh是一个只读文件
  2. source variable.sh不允许

1 个答案:

答案 0 :(得分:0)

我已经像这样重写了你的脚本,它可以工作:

[sahaquiel@sahaquiel-PC ~]$ cat variable.sh 
#!/bin/bash

var1=/home
var2="/home/${VAR22}_version"
[sahaquiel@sahaquiel-PC ~]$ cat function.sh 
#!/bin/bash

export_function () {
source variable.sh
var=$(echo "var2=${var2}" | grep "$1=" | sed -e "s/"$1="//g")
export $1=$var
}
[sahaquiel@sahaquiel-PC ~]$ cat main.sh 
#!/bin/bash

source function.sh
export_function var2
echo "$var2"
[sahaquiel@sahaquiel-PC ~]$ bash main.sh
/home/2017.4_version
[sahaquiel@sahaquiel-PC ~]$ echo $VAR22
2017.4