能否指定要修改的环境变量作为Bash中函数的参数?
我在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
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”}
。意识到这一点。