当前位置: 首页 > 面试题库 >

在Bash中使用“ test”命令将“ &&”与“&”进行对比

孔光赫
2023-03-14
问题内容

考虑:

gndlp@ubuntu:~$ test -x examples.desktop  && echo $?
gndlp@ubuntu:~$ test -x examples.desktop  & echo $?
[1] 2992
0

在这种情况下,为什么Bash会表现得如此?

测试命令是否只是没有完成而导致echo命令没有得到处理?


问题答案:

的意义&&&本质上是不同的。

  • 什么是&&Bash中?在Bash和其他许多编程语言中,&&意思是“与”。并且在这样的命令执行上下文中,这意味着&&在这种情况下,应按顺序运行左侧和右侧的项目。
  • 什么是&Bash中?而且,单个&命令意味着前面的命令(紧靠其左端)应&仅在后台运行。

所以看你的例子:

gndlp@ubuntu:~$ test -x examples.desktop  && echo $?
gndlp@ubuntu:~$ test -x examples.desktop  & echo $?
[1] 2992
0

实际上,第一个命令实际上并不返回任何内容。但是第二个命令返回一个[1] 2992,其中2992引用了在后台运行的进程ID(PID),并且0是第一个命令的输出。

由于第二个命令只是test -x examples.desktop在后台运行,因此它很快发生,因此产生了进程ID,并立即消失了。



 类似资料:
  • 从CI运行测试时看到崩溃。阅读这篇关于使用Android Test Orchestrator的文章(https://developer.android.com/training/testing/junit-runner#ato-gradle)。我正在使用adb从CI运行我的测试。想知道如何在命令行中安装编排器。apk?

  • 问题内容: 如果我在bash中运行,结果将是两个命令都运行。但是,如果我使用子进程,则将运行第一个命令,打印出该行其余部分的全部内容。下面的代码回显而不是,我如何才能运行两个命令? 问题答案: 您必须在子进程中使用shell = True,而不能使用shlex.split: 返回:

  • 我有下面的课。它允许我通过java执行命令。 当我运行命令时,上一个命令的结果没有保存。例如: 给出输出: 为什么第二个“ls”命令不显示“bin”目录的内容?

  • 问题内容: 我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件, 为了实现这一点,我正在插入文件 在文件末尾,我放入 问题是当它调用第一个命令时,它将终止脚本, 提前感谢我如何做这项工作的任何建议 问题答案: 问题在于,直到退出产生的外壳程序才返回,这时您的Python脚本将恢复。 执行所需操作的最简单方法是使用Python脚本作为参数来调用自身。代替 您将

  • 问题内容: 我运行一个包含此行的python脚本 然后,我在服务器上运行相同的代码,并收到以下错误消息 因此,我要做的就是print bashCommand在运行之前,在终端中插入一个比命令更清晰的信息os.system()。 当然,我再次收到错误(由引起os.system(bashCommand)),但是在该错误出现之前,它会在终端中打印命令。然后我只是复制了输出,然后将复制粘贴到终端中,然后按

  • 问题内容: 我想在我运行的每个bash命令之后打印日期。 这可以帮助我了解远离键盘时要执行多少命令。 我知道我能做 获取日期,但我不知道在bash上执行的每个命令之后如何甚至是否可以运行此命令。 我也会对在每个命令 之前 运行同一命令感兴趣,因此我可以知道一个命令花费了多长时间。 可能吗? 我应该编辑什么文件? 例如: 如果我也可以介绍以下功能,我将很高兴: 第一个日期是我运行程序的日期,第二个是