在Bash脚本中传递变量名称和值

时间:2014-11-13 17:07:16

标签: linux bash shell

我只是想验证我写的脚本正在做我认为正在做的事情,并且它正确地做了。

我想编写一个带有环境变量和字符串值的脚本,然后将该变量设置为给定值。所以我可以执行类似setvar BOOST_HOME /home/me/boost/boost_1.52.0的操作,脚本将export BOOST_HOME=/home/me/boost/boost_1.52.0

类似的东西:

#!/bin/bash
# Usage: setvar VAR VAR_VALUE
function setvar()
{
    VAR=${1}
    VAR_VALUE=${2}
    if [ -d $2 ]
    then
        eval export $VAR=$2
    fi
}

这似乎有效,至少从echo echo测试判断,但我对shell脚本仍然不太满意,并希望有人要么验证我在做什么,要么指出我在做什么错误/不正确。

1 个答案:

答案 0 :(得分:5)

你不需要评估。

setvar() {
  if [[ -d $2 ]]; then
    export "$1=$2"
  fi
}

使用[[代替[可以避免引用$2,因为bash(和其他shell)扩展[[不会对内部参数扩展进行分词。如果我坚持使用过时的[ -d "$2" ],我就不得不引用$2,以防它的值包含空格。