我只是想验证我写的脚本正在做我认为正在做的事情,并且它正确地做了。
我想编写一个带有环境变量和字符串值的脚本,然后将该变量设置为给定值。所以我可以执行类似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脚本仍然不太满意,并希望有人要么验证我在做什么,要么指出我在做什么错误/不正确。
答案 0 :(得分:5)
你不需要评估。
setvar() {
if [[ -d $2 ]]; then
export "$1=$2"
fi
}
使用[[
代替[
可以避免引用$2
,因为bash(和其他shell)扩展[[
不会对内部参数扩展进行分词。如果我坚持使用过时的[ -d "$2" ]
,我就不得不引用$2
,以防它的值包含空格。