1、PATH变量:shell最主要的功能就是执行用户输入的命令,例如当用户输入一条“ls”命令之后,shell就要找到该命令对应的文件并执行。通常shell都会设置一个名叫PATH的环境变量,其中保存着一系列用于查找命令文件的目录名,并且目录出现的顺序非常重要,因为shell会按序进行查找,当找到第一个与命令对应的文件就执行

2、通常可根据“$?”的值来判断上一条命令是否运行成功。一般$?=0则说明上一条命令运行成功,否则表示不成功。如果熟悉C语言的话就会知道,其实$?保存的就是上一个程序main函数的返回值。需要注意的是$?仅保存直接相邻的上一条命令的地址,下图第二个$?的值变为0是因为上一条"echo $?"命令成功执行了。通常会用$?作为脚本里面if判断语句的条件,根据上条指令的执行情况,做出不同的分支

3、后台运行命令:如下图所示,在执行的指令后添加符号'&',就能让该指令在后台执行。其中第二行,中括号里的数字表示在当前shell的后台中运行的进程编号,第二个数字则为系统进程号。所谓后台运行的本质是shell不需要等待当前的命令执行完毕即可接受新的命令执行,但是后台进程的输出依旧会显示在屏幕上。tips:1)如果例如想要杀死下图所示后台进程,可以使用kill %1或者kill 3526两种方式。2)如果想让重新用shell控制后台进程,则使用例如命令fg %1这样的方式即可。3)如果想让当前在运行的命令转为后台运行,则可以先用ctrl Z使该命令停止,然后输入bg使其在后台运行

4、在shell中逻辑运算的判断方式与C语言中大致相同。例如符号“&&”表示逻辑与,执行语句A&&B,当且仅当A运行成功才会运行B。对于逻辑或同理可得,语句A || B,当且仅当A运行失败才会运行B。

5、当执行了命令“set -e”后,之后的语句如有执行失败的,则退出整个脚本的运行,例如下图所示,如果当前目录不存在mytmp目录时,cd语句执行完就自动退出脚本了,并不会运行ls语句

6、通常即使在后台运行的进程也是shell的子进程,因此,当退出shell时,它就会给它的子进程发送一个SIGHUP的信号来杀死它。如果想要在后台运行的进程不随着shell的结束而结束,就要在输入命令的前面加上nohup,如下图所示。由此shell的子进程就会忽略发来的SIGHUP信号,脱离shell单独运行。(据说shell关闭之后就会自动在当前目录下生成一个nohup.out文件用于保存子进程的输入,实验之后发现该文件确实存在,不过并没有内容。)

下图为shell关闭之前和之后,bg进程的运行状态

参考文献:《bash Cookbook》,Carl Albing

最新文章

  1. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件
  2. 初试Code First(附Demo)
  3. 解决msi文件在XP上安装未完成(提示安装程序被中断,未能安装app。需要重新启动该安装程序进行重试)的问题。
  4. Codeforces 724 E Goods transportation
  5. Mysql海量数据存储和解决方案之一—分布式DB方案
  6. [转载-仅为个人学习所用]Stack Menu
  7. SharePoint 2013版本功能对比介绍
  8. 面向对象设计模式之Interpreter解释器模式(行为型)
  9. 如何使用easyUI
  10. CSS学习笔记10 相对定位,绝对定位与固定定位
  11. 从 PHP 到 Java
  12. CSS边框效果
  13. C语言利用异或进行两个值的交换
  14. 原来new的java对象不是所有的都存在堆内存
  15. 解决Arcgis10.2.2中dbf文件用EXCEL打开乱码问题
  16. 日志自定义Tag
  17. mysql 设置远程登录
  18. 20165226 2017-2018-4 《Java程序设计》第8周学习总结
  19. Git学习笔记二--工作区和暂存区
  20. Android 编程下字库的使用

热门文章

  1. Angularjs,WebAPI 搭建一个简易权限管理系统 —— WebAPI项目主体结构(四)
  2. mysql oom之后的page 447 log sequence number 292344272 is in the future
  3. 移除NDK方法
  4. [js开源组件开发]-手机端照片预览组件
  5. CSS3属性(二)
  6. Oracle SQL Tips
  7. 打造高仿QQ的友盟反馈界面(MVP模式)
  8. 错误:升级为xcode8之后无法上网的解决方法
  9. 在iOS 8中使用UIAlertController
  10. C++语言-03-类与对象