我有一个具有一些功能的脚本。
我可以直接从命令行运行其中一个功能吗?
像这样的东西?
myScript.sh func()
原文由 AAaa 发布,翻译遵循 CC BY-SA 4.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 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答795 阅读✓ 已解决
2 回答3.2k 阅读
如果脚本只定义函数而不做其他任何事情,您可以首先使用
source
或.
命令在当前 shell 的上下文中执行脚本,然后简单地调用该函数。有关详细信息,请参见help source
。