能否指定要修改的环境变量作为Bash中函数的参数?

能否指定要修改的环境变量作为Bash中函数的参数?,bash,Bash,我在Bash中编写了以下两个函数: function prepend_path() { PATH=$1:$PATH } function prepend_manpath() { MANPATH=$1:$MANPATH } 函数的主体实际上将更加复杂。为了避免代码重复,我希望执行以下操作: function prepend() { "$1"=$2:"$1" } function prepend_path() { prepend PATH $1 } function prepend_manpath

我在Bash中编写了以下两个函数:

function prepend_path() { PATH=$1:$PATH }
function prepend_manpath() { MANPATH=$1:$MANPATH }
函数的主体实际上将更加复杂。为了避免代码重复,我希望执行以下操作:

function prepend() { "$1"=$2:"$1" }
function prepend_path() { prepend PATH $1 }
function prepend_manpath() { prepend MANPATH $1 }
但是,
prepend
不是有效的Bash。其思想是将环境变量的名称作为参数传递给Bash。是否可能,或者是否有其他解决方案?

尝试评估:

function prepend() { eval "$1=$2:\$$1"; }

eval
将对其参数进行求值,就像它是一个命令一样。

以下是我的shell库中用于此任务的一些函数。它还负责环境变量为空时的处理,以便在这种情况下不添加冒号

append_path()
{
  eval $1=\${$1:+\$$1\\:}$2
}

prepend_path()
{
  eval $1=$2\${$1:+\\:\$$1}
}
下面是我如何使用它

append_binpath()
{
  append_path PATH "$1"
}

append_manpath()
{
  append_path MANPATH "$1"
}

副本。简短回答-您可以使用
eval
。您需要空格和分号:
函数prepend(){eval“$1=$2:\$$1”}
。意识到这一点。