for循环

时间:2016-04-06 11:57:55

标签: bash function for-loop

我正在尝试创建一个帮助函数来开发我的脚本,该脚本打印传递给函数的每个参数的名称和值。

使用单个变量执行此操作可以通过shell参数扩展来实现,如:

foo=bar
var_name=${!foo@}
echo $var_name    # foo
echo $foo         # bar

在这样的函数中做同样的事情:

write_params() {
  for var in "$@"; do
    echo "${!var@} === $var"
  done
}

使用以下呼叫进行呼叫

write_params $SOURCE $TARGET $pwd

我的世界会给我以下输出

SOURCE === <source value>
TARGET === <target value>
pwd === <pwd value>

但现在它给了我以下输出:

var === <source value>
var === <target value>
var === <pwd value>

当然我可以在这里使用一些魔法,但我现在经过一些搜索后仍未找到它,所以我会在这里问。

修改 如评论中所述,以下解决方案有效:

write_params() {
  for var in "$@"; do
    echo "$var === ${!var}"
  done
}

如果你传递函数中的变量,如下所示:

write_params SOURCE TARGET pwd

0 个答案:

没有答案