在||的情况下运行两个命令 或者 &&

托马斯·韦勒

我已经读过&&和|| 我想在错误的情况下运行两个命令。

我已经尝试过了,;但是一直都运行我尝试将其放在花括号中,{ command1; command2 }但这会导致语法错误。

我想做类似的事情

command && echo "Ok, continuing" || echo "Check internet connection"; exit 1

仅当没有互联网连接时才退出。

约翰1024

使用parens会将命令放在并非总是您想要的子外壳中。或者,使用花括号:

command && echo "Ok, continuing" || { echo "Check internet connection"; exit 1; }

这里的窍门是,与括号不同,括号中的最终命令必须后跟;

为什么需要分号或换行符

大括号是命令的有效参数。例如,以下是花括号作为以下参数的参数echo

$ echo }
}

因此,如果外壳看到:

{ command1; command2 }

shell将command1解释为没有参数,而将command2解释为只有一个由字符组成的参数}大括号}仅在分号或换行符之后才被解释为结束分组。要进行上述工作:

{ command1; command2; }

子shell之间的差异{...}(...)

观察到以下设置x为10,但是在echo命令运行之前忘记了该设置

$ x=0; false || ( echo Hello; x=10 )
Hello
$ echo $x
0

相比之下,使用花括号x=10可以记住的设置

$ x=0; false || { echo Hello; x=10; }
Hello
$ echo $x
10

区别在于,子外壳程序完成后,子外壳程序中的变量分配无法继续存在。

文献资料

来自man bash

(列表)

该列表在子外壳程序环境中执行(请参见下面的“命令执行环境”)。在命令完成后,影响外壳环境的变量分配和内置命令将保持无效。返回状态是列表的退出状态。

{ 列表; }

list仅在当前的shell环境中执行。列表必须以换行符或分号终止。这称为组命令。返回状态是列表的退出状态。请注意,与元字符(和)不同,{和}是保留字,并且必须出现在允许识别保留字的位置。由于它们不会造成单词中断,因此必须使用空格或其他shell元字符将它们与list分开。

[增加了重点]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在不使用<input>元素的情况下提交表单,或者<input>元素可以包含两个<p>元素?

来自分类Dev

我可以组合这两个命令吗?(或者我正在打一场失败的战斗?)

来自分类Dev

用户输入时如何运行sublime plugin命令;或者 }

来自分类Dev

如何在WPF中绑定对象的两个实例(或者可以?)

来自分类Dev

如何在WPF中绑定对象的两个实例(或者可以?)

来自分类Dev

如何删除单个应用程序的窗口管理器,或者在没有窗口管理的情况下打开它?

来自分类Dev

每月日期的顺序,以确保它是同一天,或者在无效的情况下是月份的最后一天

来自分类Dev

在不尝试/不捕获的情况下进行延迟,或者将其包含在一项功能中

来自分类Dev

Boost协程是否比Boost.Asio的异步操作更快?或者在什么情况下协程可以更快?

来自分类Dev

如何删除单个应用程序的窗口管理器,或者在没有窗口管理的情况下打开它?

来自分类Dev

尝试在while循环之后创建if语句,或者在结果为空的情况下执行其他操作。这可能吗?

来自分类Dev

Matplotlib 中的透明导航栏(或者,是否可以在没有栏的情况下添加导航按钮?)

来自分类Dev

更改 Dockerfile 中的网络设置 (net.ipv4.ip_default_ttl)(或者,理想情况下,对于任何容器)

来自分类Dev

是我的罐双点击,或者在命令行启动?

来自分类Dev

和?或者?如果?计算符合2个条件的订单

来自分类Dev

我如何打印 2 个变量或者 n 次

来自分类Dev

jQuery addClass打破延迟,或者jQuery延迟打破CSS过渡,或者两者都发生

来自分类Dev

在没有 tkinter 或线程模块的情况下运行两个 while 循环

来自分类Dev

将文件名与提供的模式进行比较,或者比较两个具有通配符的字符串

来自分类Dev

Python jsonschema,什么也不做,或者只需要两个字段之一

来自分类Dev

将一个数组拆分为两个并行数组,或者在C#中直接读取为两个数组

来自分类Dev

在默认情况下引用两个gulp任务

来自分类Dev

在没有.then()的情况下执行两个函数

来自分类Dev

Git返回N个本地提交,运行测试并修复,或者返回原始提示

来自分类Dev

如何保存3D图像,或者在不打开Matlab的情况下将其从Matlab保存后可以手动旋转的图像格式是什么?

来自分类Dev

Pig:如何将所有元组发送到UDF而不进行分组处理?或者如何在不分组的情况下将元组转换为Bag?

来自分类Dev

我如何在不寻求许可的情况下获得用户的位置,或者如果用户一次被许可,则无需再次询问?

来自分类Dev

导入依赖关系以完成特定任务是否更有效?或者在没有依赖关系的情况下进行编码是否更好?

来自分类Dev

如果您使用的仅是飞镖程序包(riverpod),或者在没有上下文的情况下如何使用提供程序,如何收听更改?

Related 相关文章

  1. 1

    是否可以在不使用<input>元素的情况下提交表单,或者<input>元素可以包含两个<p>元素?

  2. 2

    我可以组合这两个命令吗?(或者我正在打一场失败的战斗?)

  3. 3

    用户输入时如何运行sublime plugin命令;或者 }

  4. 4

    如何在WPF中绑定对象的两个实例(或者可以?)

  5. 5

    如何在WPF中绑定对象的两个实例(或者可以?)

  6. 6

    如何删除单个应用程序的窗口管理器,或者在没有窗口管理的情况下打开它?

  7. 7

    每月日期的顺序,以确保它是同一天,或者在无效的情况下是月份的最后一天

  8. 8

    在不尝试/不捕获的情况下进行延迟,或者将其包含在一项功能中

  9. 9

    Boost协程是否比Boost.Asio的异步操作更快?或者在什么情况下协程可以更快?

  10. 10

    如何删除单个应用程序的窗口管理器,或者在没有窗口管理的情况下打开它?

  11. 11

    尝试在while循环之后创建if语句,或者在结果为空的情况下执行其他操作。这可能吗?

  12. 12

    Matplotlib 中的透明导航栏(或者,是否可以在没有栏的情况下添加导航按钮?)

  13. 13

    更改 Dockerfile 中的网络设置 (net.ipv4.ip_default_ttl)(或者,理想情况下,对于任何容器)

  14. 14

    是我的罐双点击,或者在命令行启动?

  15. 15

    和?或者?如果?计算符合2个条件的订单

  16. 16

    我如何打印 2 个变量或者 n 次

  17. 17

    jQuery addClass打破延迟,或者jQuery延迟打破CSS过渡,或者两者都发生

  18. 18

    在没有 tkinter 或线程模块的情况下运行两个 while 循环

  19. 19

    将文件名与提供的模式进行比较,或者比较两个具有通配符的字符串

  20. 20

    Python jsonschema,什么也不做,或者只需要两个字段之一

  21. 21

    将一个数组拆分为两个并行数组,或者在C#中直接读取为两个数组

  22. 22

    在默认情况下引用两个gulp任务

  23. 23

    在没有.then()的情况下执行两个函数

  24. 24

    Git返回N个本地提交,运行测试并修复,或者返回原始提示

  25. 25

    如何保存3D图像,或者在不打开Matlab的情况下将其从Matlab保存后可以手动旋转的图像格式是什么?

  26. 26

    Pig:如何将所有元组发送到UDF而不进行分组处理?或者如何在不分组的情况下将元组转换为Bag?

  27. 27

    我如何在不寻求许可的情况下获得用户的位置,或者如果用户一次被许可,则无需再次询问?

  28. 28

    导入依赖关系以完成特定任务是否更有效?或者在没有依赖关系的情况下进行编码是否更好?

  29. 29

    如果您使用的仅是飞镖程序包(riverpod),或者在没有上下文的情况下如何使用提供程序,如何收听更改?

热门标签

归档