GVKun编程网logo

bash – if-then和命令组之间的功能差异(bash的if语句)

13

在这篇文章中,我们将带领您了解bash–if-then和命令组之间的功能差异的全貌,包括bash的if语句的相关情况。同时,我们还将为您介绍有关Bash/sh-&&和;之间的差异、Bashshell和

在这篇文章中,我们将带领您了解bash – if-then和命令组之间的功能差异的全貌,包括bash的if语句的相关情况。同时,我们还将为您介绍有关Bash / sh-&&和;之间的差异、Bash shell和Bash终端之间的区别?、bash – 管道和过滤器之间的差异?、bash中两个字符串之间的差异的知识,以帮助您更好地理解这个主题。

本文目录一览:

bash – if-then和命令组之间的功能差异(bash的if语句)

bash – if-then和命令组之间的功能差异(bash的if语句)

使用简单的if-then语句是否有任何功能优势,例如

if [ … ]; then
do

过度使用带有命令组的短路列表评估器

[ … ] && {
}

当然,if-then是编写它的标准方式,但从功能的角度来看是否有任何实际的差异/优势?

使用()而不是{}将生成一个新的子shell,从而为if-then块内的变量创建一个新的范围.

解决方法

不是你的例子,而是常见的

condition && foo || bar

是不一样的

if condition
then
  foo
else
  bar
fi

在前一种情况下,bar不仅会在条件失败时运行,而且如果foo失败也会运行.

Bash / sh-&&和;之间的差异

Bash / sh-&&和;之间的差异

如何解决Bash / sh-&&和;之间的差异?

| 我通常使用“ 0”在一行中组合多个命令,但有些人更喜欢“ 1”。有什么区别吗?例如,
cd ~; cd -
cd ~ && cd -
似乎是同一回事。哪个版本更便于携带,例如bash子集(如Android的shell左右)将支持它吗?     

解决方法

        如果前一个命令失败并显示“ 0”,则第二个命令将运行。 但是使用
&&
,第二个就不会运行。 这是操作之间的“懒惰”逻辑“ AND”操作数。     ,        我使用using1ѭ是因为很久以前在附近的计算机上:
root# pwd
/
root# cd /tnp/test; rm -rf *
cd: /tnp/test: No such file or directory
...
... and after a while ...
...   
^C
但没有帮助...;)
cd /tnp/test && rm -rf *
是安全的...;)     ,        在
cmd1 && cmd2
中,仅当
cmd1
成功(返回0)时才执行
cmd2
。 在
cmd1 ; cmd2
中,无论如何都将执行
cmd2
。 这两个构造都是POSIX兼容shell的一部分。     ,        “ 1”表示如果前一个以状态0退出,则执行下一个命令。 反之,使用
||
,即,如果前一个命令以不等于0的状态退出,则执行be0ѭ总是执行。 当您需要执行特定操作时,此功能非常有用,具体取决于上一个命令是否完成。     ,        由“ 0”分隔的命令将按顺序执行,无论其完成状态如何。 使用
&&
,仅当第一个命令成功完成(返回退出状态0)时,才执行第二个命令。 bash手册页中的
Lists
对此进行了介绍。我希望任何类似Unix的外壳程序都支持这两个操作符,但是我不特别了解Android外壳程序。     ,        
&&
允许条件执行,而
;
总是执行第二个命令。 例如仅当
command1
以with25ѭ终止时,才执行with22ѭ,terminated23ѭ,表示一切顺利,而在
command1 ; command2
中,无论
command1
的结果如何,始终执行第二条命令。     ,        &&在bash中是逻辑AND。 Bash对逻辑AND进行短路评估。这个成语是表达以下内容的一种简单方法:
cmd1;rc=$?
if [ $rc -eq 0 ]; then
   cmd2
fi
而;版本仅仅是:
cmd1
cmd2
    

Bash shell和Bash终端之间的区别?

Bash shell和Bash终端之间的区别?

好的,我希望这个问题有所帮助,但是bash shell和bash终端有什么区别?例.当我第一次打开终端,我有一个提示与我目前的目录和我的用户名.在终端窗口标题中,它表示-bash-,当我键入echo $SHELL我得到bash.所以默认情况下shell是bash.当我的混乱发生时,当我打bash.我的提示然后去bash-3.2 $.显然这是一个不同的模式.有什么重大差异吗?我已经阅读了没有回答的手册页.我知道一个bash shell是什么,但是没有得到什么区别.感谢您提前清楚.
没有区别,它们都是bash shell的实例.

你看到不同提示的原因是你的初始登录shell源码〜/ .bash_profile大概你有你的提示设置.当你键入bash它调用另一个shell,但是因为这不是一个登录shell,它不会源码〜/ .bash_profile,所以你得到默认提示.

如果你调用bash -l(它调用bash,就像它是一个登录shell),我敢打赌,你会看到你的原始提示仍然存在

bash – 管道和过滤器之间的差异?

bash – 管道和过滤器之间的差异?

我是 shell脚本的新手,我想知道管道和过滤器之间的区别.
他们似乎都做同样的事情.甚至格式也是一样的.

ls -l | grep user |cat >user

管道还是过滤器?

解决方法

在您的示例中,整个命令是一个管道:

ls -l | grep user | cat > user

ls充当数据源.然后grep充当过滤器 – 过滤器对数据执行某种转换.管道(|)将数据从ls传递给grep,执行缓冲等.最后cat(在你的例子中是无关的)将过滤后的数据输出到某个东西(终端,文件,变量).

bash中两个字符串之间的差异

bash中两个字符串之间的差异

我有两个包含信息行的字符串.我想获得两个字符串中不同的行.
例:
String1中:

"This is line1
This is line2
This is line3"

String2的:

"This is line1
This is linex
This is line2"

结果预期:

diff string1 string2 is:
"This is line3"

diff string2 string1 is:
"This is linex"

解决方法

你可以使用comm:

$str1="This is line1
> This is line2
> This is line3"
$str2="This is line1
> This is linex
> This is line2"

$comm -23 <(echo "$str1" | sort) <(echo "$str2" | sort)
This is line3
$comm -23 <(echo "$str2" | sort) <(echo "$str1" | sort)
This is linex

今天关于bash – if-then和命令组之间的功能差异bash的if语句的讲解已经结束,谢谢您的阅读,如果想了解更多关于Bash / sh-&&和;之间的差异、Bash shell和Bash终端之间的区别?、bash – 管道和过滤器之间的差异?、bash中两个字符串之间的差异的相关知识,请在本站搜索。

本文标签: