Bash 我如何使用&&;用我自己的功能?
运行此命令将打印出两条语句Bash 我如何使用&&;用我自己的功能?,bash,Bash,运行此命令将打印出两条语句 #!/bin/bash echo "Hello" && echo "World" 但是,运行此命令只打印“Hello” 为什么这不起作用?我如何更改脚本使其起作用?退出值为0表示成功,而其他值表示失败。如果左侧失败(&&运算符返回非零),则不会执行右侧 因此,将return 1更改为return 0return 1(或任何非0的内容)表示false为bash,这意味着第二个命令将不会被调用 使用返回0(这意味着为true),或使用其他操作符(如|或|
#!/bin/bash
echo "Hello" && echo "World"
但是,运行此命令只打印“Hello”
为什么这不起作用?我如何更改脚本使其起作用?退出值为0表示成功,而其他值表示失败。如果左侧失败(&&运算符返回非零),则不会执行右侧
因此,将return 1
更改为return 0
return 1
(或任何非0的内容)表示false
为bash,这意味着第二个命令将不会被调用
使用返回0
(这意味着为true
),或使用其他操作符(如|
或|
)链接它们)
如评论中所述,从技术上讲,bash没有布尔值,
&&
和|
在手册中不是“布尔短路运算符”,而是“控制运算符”。Asa和&b
表示“当且仅当a
成功时运行b
,“成功”定义为零退出代码(命令true
始终返回0,而false
返回1),净效果与我上面描述的相同。在bash中,返回值1
表示错误
尝试
返回0
删除message()
函数中的return语句。&仅当第一条指令成功时才执行第二条指令,即结果为0应该有一个徽章,用于触发N个同时相同的答案。由于所有状态下的答案,bash
使用与您通常的真/假期望值相反的成功/失败值,因为它基于返回码。@Ben我实际上又得到了2个,但它们被删除了:)请参见--&
和|
是控制运算符,不应与布尔短路逻辑运算符混淆。0表示真?我应该猜到:)。谢谢@Rupert不是“真或假”——而是:a&&b
表示“仅当a成功时运行b”——注意这里没有“真或假”的附件,因为&
和|
类似于布尔短路求值器,但它们不是。它们是“控制运算符”。了解默认返回值的计算结果为true非常有用。但这并不是在所有情况下都有帮助,这不一定是真的<代码>&&和|
不是布尔短路运算符(因此标准TTL逻辑或名称不适用)。它们是控制运算符,其中a和&b
表示“仅当a成功时运行b”(不存在“真或假”)——手册中写道:“当且仅当command1返回零退出状态时才执行command2。”@pst:是的,那么命令true
和false
的退出状态是什么&&
和|
在bash中工作,就像布尔快捷操作符一样,如果我们知道“exit code=0表示true,其他任何东西都表示false”。
#!/bin/bash
message() {
echo "Hello"
return 1
}
message && echo "World"