我只是想验证我写的脚本正在做我认为正在做的事情,并且它正在正确地执行它.
我想编写一个带有环境变量和字符串值的脚本,然后将该变量设置为给定值.所以我可以做类似的事情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
}
Run Code Online (Sandbox Code Playgroud)
这似乎是有效的,至少从回声echo测试判断,但我仍然不太熟悉shell脚本,并希望有人要么验证我在做什么或指出我做错了什么/不正确.
你不需要eval.
setvar() {
if [[ -d $2 ]]; then
export "$1=$2"
fi
}
Run Code Online (Sandbox Code Playgroud)
使用[[而不是[避免引用的需要$2,因为bash(和其他shell)扩展[[不会对内部参数扩展进行分词.如果我坚持使用老式的[ -d "$2" ],我将不得不引用它$2,以防它的值包括空格.