【发布时间】:2021-08-13 10:55:56
【问题描述】:
我有一个看起来像这样的 bash 脚本:
#!/bin/bash
function one {
echo "I am function one!!"
}
function two {
echo "I am function two!!"
}
one
two
如果我只是简单地执行 bash test.sh,这两个函数都会被执行。
我想做的是从终端调用脚本,同时指定两个函数之一,然后只执行它。 也许是这样的: bash test.sh$one() 它应该只打印出来
我是功能一!!
这可能吗?如果可以,我将如何实现它?
谢谢!
===========================
编辑:根据@Waqas 的建议,我最终实现了以下对我有用的技巧:
function main {
if [ -z "$1" ]
then
some commands
# else run the given function only
else
$1
fi
}
main "$@"
谢谢!!!
【问题讨论】:
-
没有这种机制,但你可以一起破解一些东西来解析脚本并只提取一个函数。但是,正确的方法可能是在其中定义函数但不执行它们的附加文件,然后
source该文件使函数可用或根据其参数调整脚本以使其行为不同。 -
不是
(),但是你可以简单地将函数调用替换为$@,然后像bash test.sh one一样调用