国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

shellscript學習筆記-----命令執行

2024-06-28 14:32:40
字體:
來源:轉載
供稿:網友

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


上一篇:GDB教程詳解

下一篇:認識與學習shell

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巨野县| 新邵县| 从江县| 松阳县| 犍为县| 旬邑县| 墨玉县| 和龙市| 七台河市| 南川市| 丰城市| 修水县| 桐城市| 赞皇县| 临汾市| 泗阳县| 东乌珠穆沁旗| 柳林县| 汝南县| 望都县| 剑阁县| 健康| 太康县| 离岛区| 河北区| 如皋市| 古丈县| 凌海市| 大洼县| 伊吾县| 洛扎县| 井陉县| 沙洋县| 农安县| 仪陇县| 太白县| 论坛| 云龙县| 台湾省| 陆川县| 张家界市|