Sub Function in Bash Scripting
我只想在我的脚本中实现简单的if & then语句,但它分为两部分。如果第一个(主)成功,那么只有第二个将被执行,否则将被退出。
像-
1 2 3 4 5 6 7 8
| # script_1.sh
function()
{
sub_function()
{
#cmd
}
} |
江户十一〔一〕号
怎么可能?
- 从描述中,很难理解你在做什么,在哪里遇到困难。你能给你的问题加些代码吗?最好是您可以创建一个最小、完整和可验证的示例。
- #script_1.sh function()sub_function()cmd script_2.sh源脚本_1.sh函数sub_函数
- 呵呵,如果这和你的问题有关,请把它放到你的问题里。
- 如果我的答案不能解决你想要解决的问题,那么你可能需要在你的问题中提供一个更好的例子,因为这仍然很难理解。给我们一个例子,说明您在终端中输入的命令以及您想要得到的结果。
我可能没有正确理解你的问题,但你可能会使用&&。
将&&放在两个命令之间意味着只有第一个命令成功时才会执行第二个命令。
例如
1 2 3 4 5
| [root@box ~]# echo 'first command' && echo"I am printed because the first command succeeded"
first command
I am printed because the first command succeeded
[root@box ~]# veafdasvea && echo"This string is not printed because the first command failed"
bash: veafdasvea: command not found |
- 谢谢,但在执行由两部分组成的脚本时,如何使用&&运算符?
- ./script1.sh && ./script2.sh可以做你想做的。只有当script1.sh成功完成时,script2.sh才会运行。这有道理吗?
- 你真是个天才。
- 很高兴我能帮忙。我还添加了一些关于if/else语句的信息,以防您感兴趣。如果我的回答对你有帮助的话,请随意推翻我的回答。
- 非常感谢您的更新,实际上我计划以相同的方式执行两个或三个以上的子脚本,但是在使用else时,您只能上升到一个级别。
- 所以…你的if [[ $(...) ]]例子是个问题。[[ ... ]]中的内容需要遵循bash手册页的条件表达式部分中记录的内容。它以/bin/test为基础,不应依赖command_that_could_whatever的输出来产生适当的表达式。如果要测试命令的结果,只需使用:if command; then。
- 谢谢@ghoti,我已经删除了这个有问题的例子,因为不管怎样,用户都没有在if语句之后。但我知道我做错了什么(使用命令的输出,而不是使用返回代码而不是输出的if command; then)。
- 是否可以在前一个的then中添加新的if & then语句?我的意思是,这样我们也可以达到同样的目标。
- 有点。你可以随心所欲地用尽可能多或尽可能少的if, elif, elif, elif, then来做if, elif, elif, elif, then。如果第一个条件为假,则检查第二个条件;如果第二个条件为假,则检查第三个条件。如果传递了任何条件,则执行其下面的代码块。如果没有代码块通过,则应用else块下的代码。
- 有关if、elif和else格式的示例,请参阅以下答案:stackoverflow.com/a/16034851/3465014