Linuxshell中[-z]echo0echo1的结果是多少
测试题: [ -z "" ] && echo 0 || echo 1 的结果是多少
shell中&&和||的使⽤⽅法
&&运算符:
command1 && command2
&&左边的命令(命令1)返回真(即返回0,成功被执⾏)后,&&右边的命令(命令2)才能够被执⾏;换句话说,“如果这个命令执⾏成功&&那么执⾏这个命令”。
语法格式如下:
command1 && command2 [&& command3 ...]
1. 命令之间使⽤ && 连接,实现逻辑与的功能。
2. 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执⾏。
3. 只要有⼀个命令返回假(命令返回值 $? == 1),后⾯的命令就不会被执⾏。
⽰例 1
raoyi@ubuntu:~$ cp ~/ ~/1.txt && rm ~/ && echo "success"
⽰例 1 中的命令⾸先从 ~/Desktop ⽬录复制 1.txt ⽂件到 ~ ⽬录;执⾏成功后,使⽤ rm 删除源⽂件;如果删除成功则输出提⽰信息。
||运算符:
command1 || command2
||则与&&相反。如果||左边的命令(命令1)未执⾏成功,那么就执⾏||右边的命令(命令2);或者换句话说,“如果这个命令执⾏失败了||那么就执⾏这个命令。
1. 命令之间使⽤ || 连接,实现逻辑或的功能。
2. 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执⾏。这和 c 语⾔中的逻辑或语法功能相同,即实现短路逻
辑或操作。
3. 只要有⼀个命令返回真(命令返回值 $? == 0),后⾯的命令就不会被执⾏。
⽰例 2
raoyi@ubuntu:~$ rm ~/ || echo "fail"
在⽰例 2 中,如果 ~/Desktop ⽬录下不存在⽂件 1.txt,将输出提⽰信息。
⽰例 3
raoyi@ubuntu:~$ rm ~/ && echo "success" || echo "fail"
在⽰例 3 中,如果 ~/Desktop ⽬录下存在⽂件 1.txt,将输出 success 提⽰信息;否则输出 fail 提⽰信息。
如果希望把⼏个命令合在⼀起执⾏,shell提供了两种⽅法。既可以在当前shell也可以在⼦shell中执⾏⼀组命令。
()运算符:
为了在当前shell中执⾏⼀组命令,可以⽤命令分隔符(即",")隔开每⼀个命令,并把所有的命令⽤圆括号()
括起来。
它的⼀般形式为:
( 命令;命令;命令… )
1. ⼀条命令需要独占⼀个物理⾏,如果需要将多条命令放在同⼀⾏,命令之间使⽤命令分隔符(;)分隔。执⾏的效果等同于多个独⽴的
命令单独执⾏的效果。
2. () 表⽰在当前 shell 中将多个命令作为⼀个整体执⾏。需要注意的是,使⽤ () 括起来的命令在执⾏前⾯都不会切换当前⼯作⽬录,也就
是说命令组合都是在当前⼯作⽬录下被执⾏的,尽管命令中有切换⽬录的命令。
3. 命令组合常和命令执⾏控制结合起来使⽤。
⽰例 4
raoyi@ubuntu:~$ rm ~/ || (cd ~/Desktop/;ls -a;echo "fail")linuxecho是什么意思
在⽰例 4 中,如果⽬录 ~/Desktop 下不存在⽂件 1.txt,则执⾏命令组合。
{}运算符:
如果使⽤{}来代替(),那么相应的命令将在⼦shell⽽不是当前shell中作为⼀个整体被执⾏,只有在{}中所有命令的输出作为⼀个整体被重定向时,其中的命令才被放到⼦shell中执⾏,否则在当前shell执⾏。
它的⼀般形式为:
{ 命令;命令;命令… }
(注意:在使⽤{}时,{}与命令之间必须使⽤⼀个空格)
测试:
~$ A=1;echo $A;{ A=2; };echo $A
1
2
~$ A=1;echo $A;( A=2; );echo $A
1
1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论