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

shell script 学习笔记-----命令执行的更多相关文章

  1. shell script 学习笔记-----if,for,while,case语句

    1.if内的判断条件为逻辑运算: 2.if内的判断条件为目录是否存在,文件是否存在,下图先检验目录/home/monster是否存在,然后再检测/home/monster中的file.txt文件是否存 ...

  2. shell script 学习笔记-----shell变量

    1.在赋值语句name=value中不能存在空格,例如:name = value这样的形式会被认为是三个变量,因为本质上来说,脚本的内容就是传给shell程序的变量,而变量之间是通过空格区分的.如果想 ...

  3. shell script 学习笔记-----标准输出

    1.将标准输出(stdout)和标准错误输出(stderr)分别重定向到两个不同的文件 其中符号'>'默认将标准输出重定向,意思和'1>'相同,‘2>'表示重定向标准错误输出,数字1 ...

  4. redis学习笔记——命令执行流程

    基础知识部分 如果需要掌握Redis的整个命令的执行过程,那么必须掌握一些基本的概念!否则根本看不懂,下面我就一些在我看来必备的基础知识进行总结,希望能为后面命令的整个执行过程做铺垫. 事件 Redi ...

  5. Linux shell 菜鸟学习笔记....

    20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...

  6. linux学习笔记命令篇1---命令ls

    前言:  linux中接触最多的就是命令和文件. 命令 命令是有其格式的, 一般格式是command [option] parameter1 parameter2 [paramete3 ...]: 注 ...

  7. bash shell学习-shell script基础 (笔记)

    A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版)  Linux ...

  8. Shell脚本学习-echo命令

    跟着RUNOOB网站的教程学习的笔记 shell的echo指令与PHP的echo指令类似,都是用于字符串的输出.命令格式: echo string 1 显示普通字符串 echo "It is ...

  9. shell编程学习笔记(一):编写我的第一段代码

    目前在学习Shell编程,我会把我的学习笔记记录在这里.大神可以直接略过~ 嗯,第一段代码,肯定是要输出Hello World了~ 以下蓝色字体的内容为linux命令,红色字体的内容为输出的内容: # ...

随机推荐

  1. python,python3

    当下主流的Linux发行版都集成了python2,直接在终端输入$python就可进入交互式解释器,或者输入$python3进入python3的解释器,当然,也可以使用这个解释器直接翻译一个pytho ...

  2. CSS 最核心的四个概念(摘录)

    本文将讲述 CSS 中最核心的几个概念,包括:盒模型.position.float等.这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成.为了掌握它们,有必要写出来探讨一下,如 ...

  3. vmware screen

    1. Question Description: the screen of the vmware looks small . 2. Solution: 2.1 look the size of sc ...

  4. Couchbase介绍,更好的Cache系统

    在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度. 术语 节点:指集群里的一台服务器. 现有 Cache 系统的特点 目前业界使用得最多 ...

  5. ButterKnife

    1.简介 ButterKnife是注解中相对简单易懂的很不错的开源框架 1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率 2.方便的处理Adapter里的ViewHolder绑定 ...

  6. 【GOF23设计模式】桥接模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_桥接模式.多层继承结构.银行日志管理.管理系统消息管理.人力资源的奖金计算  未用桥接模式: package com.te ...

  7. js中的排序

    不靠谱的sort() 众所周知,js中的sort()排序是按字母表顺序排序的,这就导致如下现象: var a = [9,60,111,55,8,7777]; a.sort(); alert(a); / ...

  8. ABAP中使用浏览器打开网页

    在SAP ABAP中可以在Screen中嵌入Html control打开网页,也可以通过调用本地的IE浏览器打开. 1.在Screen中嵌入Html control的例子,在系统中有,se38:SAP ...

  9. SAP中获取当前用户相关信息的两个函数

    函数名:TH_USER_LIST作用:可以得到SM04界面显示样式的表. 函数名:TH_USER_INFO作用:可以得到当前特定用户的机器名.当前活动窗口数.IP地址等信息

  10. 基于MATLAB实现的云模型计算隶属度

    ”云”或者’云滴‘是云模型的基本单元,所谓云是指在其论域上的一个分布,可以用联合概率的形式(x, u)来表示 云模型用三个数据来表示其特征 期望:云滴在论域空间分布的期望,一般用符号Εx表示. 熵:不 ...