从posix shell中的位置参数推导出变量的名称

时间:2014-04-06 16:54:57

标签: shell posix sh

#!/bin/sh
foo()
{
  printf "$1"
}
RANDOM_VAR="hello\n"
foo $RANDOM_VAR

当您将一个或多个变量传递给函数时,在这种情况下foo,可以通过$1 $2访问它们,依此类推;你如何从foo内退一步并打印原始变量的名称,在这种情况下是RANDOM_VAR

1 个答案:

答案 0 :(得分:1)

简而言之,您不能或不能从函数内部告诉哪些变量用于创建函数的参数。不能保证参数是变量或单个变量 - 例如:

foo 123
foo ${HOME}:${PATH}

此外,如果功能关心,它可能是错误的。它应该尽可能地独立,因此独立于这些问题。如果不是,则表明该功能可能没有功能上的凝聚力。