我有三个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
的约束:
source variable.sh
不允许答案 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