命令在命令行中工作但不能概括为函数

时间:2011-07-25 21:08:58

标签: bash

this问题

@SiegeX提供了一种清除bash PATH变量的好方法 重复的条目:

PATH=$(awk 'BEGIN{ORS=":";RS="[:\n]"}!a[$0]++' <<<"${PATH%:}")

当我在命令行中键入它时,这很有效。 我尝试在bash函数中使用它,以便能够将其应用于其他变量:

function dupremove()
{
  ${1}=$(awk 'BEGIN{ORS=":";RS="[:\n]"}!a[$0]++' <<<"${1%:}")
}

但是当我执行它时会出现错误:

> dupremove PATH
bash: PATH=PATH:: command not found

我可以写任何想法吗?

1 个答案:

答案 0 :(得分:1)

这适用于我(TM)

function dupremove
{
  eval path=\$$1
  export $1=$(awk 'BEGIN{ORS=":";RS="[:\n]"}!a[$0]++' <<< $path)
}