如果我将变量作为位置参数传递给函数,是否可以确定函数内部使用的变量的名称,或者我只能访问它的值?
我有一个函数envir-export
,可以用来定义环境变量并将其存储在一个特殊的环境文件中,然后获取该环境变量。
envir-export ()
{
nm="$1"
vl="$2"
envirs_trkrc="${HOME}/Opstk/envirs"
echo "export ${nm}=${vl}" >> ${envirs_trkrc}/envirs.rc
source ${envirs_trkrc}/envirs.rc
echo "$nm exported with value $vl"
}
目前我正在通过以下调用使用
envir-export VERBOS 8
VERBOS
使用带有值的名称8
。
我想改进这个功能,无论是方便性还是功能性。
例如,如果未提供值,则我仅导出已分配值的名称。
答案1
实现这一目标的常见做法是做类似的事情
function envir-export () {
name="${1%%=*}"
value="${1##*=}"
echo 'the name is '"$name"
echo 'the value is '"$value"
}
envir-export VERBOS=8
$ function f () { name="${1%%=*}" ; value="${1##*=}" ; echo name "$name" ; echo value "$value" ; } ; f VERBOS=8
name VERBOS
value 8
$
检查 bash 手册页并搜索“参数扩展”以获取有关将输入拆分为名称和值的操作方法。