确定传递给函数的变量名称

确定传递给函数的变量名称

如果我将变量作为位置参数传递给函数,是否可以确定函数内部使用的变量的名称,或者我只能访问它的值?

我有一个函数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 手册页并搜索“参数扩展”以获取有关将输入拆分为名称和值的操作方法。

相关内容