如何在命令行中从脚本运行函数?

新手上路,请多包涵

我有一个具有一些功能的脚本。

我可以直接从命令行运行其中一个功能吗?

像这样的东西?

 myScript.sh func()

原文由 AAaa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 513
2 个回答

如果脚本只定义函数而不做其他任何事情,您可以首先使用 source. 命令在当前 shell 的上下文中执行脚本,然后简单地调用该函数。有关详细信息,请参见 help source

原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 3.0 许可协议

好吧,虽然其他答案是正确的-您当然可以做其他事情:如果您可以访问 bash 脚本,则可以对其进行修改,然后只需将特殊参数 "$@" 末尾即可-这将扩展到您指定的命令行的参数,并且由于它是“单独的”,shell 将尝试逐字调用它们;在这里您可以将函数名称指定为第一个参数。例子:

 $ cat test.sh
testA() {
  echo "TEST A $1";
}

testB() {
  echo "TEST B $2";
}

"$@"

$ bash test.sh
$ bash test.sh testA
TEST A
$ bash test.sh testA arg1 arg2
TEST A arg1
$ bash test.sh testB arg1 arg2
TEST B arg2

对于波兰语,您可以首先验证该命令是否存在并且是一个函数:

 # Check if the function exists (bash specific)
if declare -f "$1" > /dev/null
then
  # call arguments verbatim
  "$@"
else
  # Show a helpful error
  echo "'$1' is not a known function name" >&2
  exit 1
fi

原文由 sdaau 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题