shell中的命令连接
2012-11-12 14:03
155 查看
多个命令可以放在一行上,其执行情况得依赖于用在命令之间的分隔符。
如果每个命令被一个分号 (;) 所分隔,那么命令会连续的执行下去,如:
beyes@linux-beyes:/proc> printf "%s\n" "This is executed" ; printf "%s\n" "And so is this"
This is executed
And so is this
如果每个命令被 && 号分隔,那么这些命令会一直执行下去,如果中间有错误的命令存在,则不再执行后面的命令,没错则执行到完为止:
beyes@linux-beyes:/proc> date && printf "%s\n" "The date command was successful"
2009年 08月 28日 星期五 18:28:16 CST
The date command was successful
所有命令成功执行完毕。
beyes@linux-beyes:/proc> date && llk && printf "%s\n" "The date command was successful"
2009年 08月 28日 星期五 18:28:52 CST
bash: llk: command not found
后面的成功执行提示语句不会被输出,因为 llk 命令无法识别。
如果每个命令被双竖线(||)分隔符分隔,如果命令遇到可以成功执行的命令,那么命令停止执行,即使后面还有正确的命令则后面的所有命令都将得不到执行。假如命令一开始就执行失败,那么就会执行 || 后的下一个命令,直到遇到有可以成功执行的命令为止,假如所有的都失败,则所有这些失败的命令都会被尝试执行一次:
beyes@linux-beyes:/proc> date || ls / || date 'duck!' || uname -a
2009年 08月 28日 星期五 18:33:18 CST
第一个命令成功执行!后面的所有命令不再得到执行。
beyes@linux-beyes:/proc> date 'duck!' || dakkk || uname -a
date: 无效的日期 “duck!”
bash: dakkk: command not found
Linux linux-beyes 2.6.27.29-0.1-pae #1 SMP 2009-08-15 17:53:59 +0200 i686 i686 i386 GNU/Linux
前面的两个命令都失败了,直到找到最后一个可以成功执行的命令为止。
如果每个命令被一个分号 (;) 所分隔,那么命令会连续的执行下去,如:
beyes@linux-beyes:/proc> printf "%s\n" "This is executed" ; printf "%s\n" "And so is this"
This is executed
And so is this
如果每个命令被 && 号分隔,那么这些命令会一直执行下去,如果中间有错误的命令存在,则不再执行后面的命令,没错则执行到完为止:
beyes@linux-beyes:/proc> date && printf "%s\n" "The date command was successful"
2009年 08月 28日 星期五 18:28:16 CST
The date command was successful
所有命令成功执行完毕。
beyes@linux-beyes:/proc> date && llk && printf "%s\n" "The date command was successful"
2009年 08月 28日 星期五 18:28:52 CST
bash: llk: command not found
后面的成功执行提示语句不会被输出,因为 llk 命令无法识别。
如果每个命令被双竖线(||)分隔符分隔,如果命令遇到可以成功执行的命令,那么命令停止执行,即使后面还有正确的命令则后面的所有命令都将得不到执行。假如命令一开始就执行失败,那么就会执行 || 后的下一个命令,直到遇到有可以成功执行的命令为止,假如所有的都失败,则所有这些失败的命令都会被尝试执行一次:
beyes@linux-beyes:/proc> date || ls / || date 'duck!' || uname -a
2009年 08月 28日 星期五 18:33:18 CST
第一个命令成功执行!后面的所有命令不再得到执行。
beyes@linux-beyes:/proc> date 'duck!' || dakkk || uname -a
date: 无效的日期 “duck!”
bash: dakkk: command not found
Linux linux-beyes 2.6.27.29-0.1-pae #1 SMP 2009-08-15 17:53:59 +0200 i686 i686 i386 GNU/Linux
前面的两个命令都失败了,直到找到最后一个可以成功执行的命令为止。
相关文章推荐
- java连接SSH服务器并执行shell命令
- Linux下创建shell命令集合——你意想不到的软连接
- shell命令批量杀死MySQL连接进程
- Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程
- shell命令批量杀死MySQL连接进程
- 通过shell命令连接wifi
- Java实现ssh连接linux并执行shell命令
- shell命令批量杀死MySQL连接进程
- shell脚本使用ssh命令连接主机,自动创建目录,分发程序,执行命令
- Shell命令 参数 字符串连接
- Android系统中通过shell命令实现wifi的连接控制
- Windows的cmd终端连接android手机运行adb shell脚本命令
- win7 cmd终端连接android手机运行adb shell脚本命令
- Linux——note shell常用命令 cut 、sort、unqi、tee、tr、split和shell中连接符&& ||
- win7 cmd终端连接android手机运行adb shell脚本命令
- 多条Shell命令的组合连接
- windows 下 java程序jsch连接远程linux服务器执行shell命令
- Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程
- mac shell命令连接mongo
- 计划任务里执行包含连接oracle命令的shell脚本报错:SP2-0667: Message file sp1<lang>.msb not found