转自:https://www.jianshu.com/p/617c1ee1e46e | 运算符管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。 用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2,例如: $ls -s|sort -nr (请注意不要复制$符号进去哦) -s 是file size,-n是numeric-sort,-r是reverse,反转 该命令列出当前目录中的文档(含size),并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。 && 运算符:格式 command1 && command2 &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。 command1 && command2 && command3 ...
|| 运算符:格式 command1 || command2 ||则与&&相反。如果||左边的命令(command1)未执行成功,那么就执行||右边的命令(command2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。
echo $BASH |grep -q 'bash' || { exec bash "$0" "$@" || exit 1; } 系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。 () 运算符:如果希望把几个命令合在一起执行,shell提供了两种方法。既可以在当前shell也可以在子shell中执行一组命令。 (command1;command2;command3....) 多个命令之间用;分隔
{} 运算符:如果使用{}来代替(),那么相应的命令将在当前shell而不是子shell中作为一个整体被执行,只有在{}中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行,否则在当前shell执行。 { command1;command2;command3… } 注意:在使用{}时,{}与命令之间必须使用一个空格
shell的逻辑与或非 逻辑非 ! 条件表达式的相反 if [ ! 表达式 ] if [ ! -d $num ] 如果不存在目录$num 逻辑与 –a 条件表达式的并列 if [ 表达式1 –a 表达式2 ] 逻辑或 -o 条件表达式的或 if [ 表达式1 –o 表达式2 ]
if [ -z "$JHHOME" -a -d $HOME/$num ]
作者:shu_ke 链接:https://www.jianshu.com/p/617c1ee1e46e 來源:简书 著作权归作者所有。非商业转载请注明出处。 |
|