shell程式設計筆記(二)

2021-08-19 20:17:08 字數 2114 閱讀 1343

這兩個屬於附加許可權位,這兩個附加許可權通過設定使用者id位(suid)設定組id位(sgid)的機制來賦給程式

當你執行了乙個設定了suid位的程式時,你就繼承了該程式的屬主的許可權,當你執行了乙個設定了sgid位的程式,你就繼承了該程式所屬使用者組的許可權

可以看到passwd程式的suid位被啟用

所謂前台程序就是需要占用終端的程序,在該前台程序執行過程中你是無法進行任何輸入的

後台程序和前台程序正好相反,他不占用終端,你可以在該後台程序執行過程中,繼續進行其他的操作,比如我們可以把ls程序放到後台來執行:

此時我們可以正常進行其他的輸入,後台程序執行完畢後會自動把結果輸出到終端介面上

在上面的中,我們可以看到第一行輸出[1] 5809,這個shell分配給程序的任務識別符號,也就是pid

前面的示例我們用的都是bash,下面我們用sh來進行演示,我們先來寫一段這樣的指令碼:

read.sh

#!/bin/sh

read line

read

$line

我們令這段腳在後台執行:

/bin/sh read.sh &
它在後台執行的時候是需要輸入的,但是我們又沒辦法對他輸入,

unix環境下,當乙個程序以後臺形式啟動,但嘗試去讀寫控制台終端時,將會觸發sigttin(讀)和sigttou(寫)訊號量

此時不管我們輸入什麼,都會觸發sigttin訊號,導致程式中止:

解決此問題有兩種方式,一種就是將程序切換至前台,另一種就是通過重定向的方式來執行該程式

先看一下重定向的方式:

下面說一下如何切換前後臺程序

我們在上面使用&來執行乙個後台程式,其實除了這種方式,我們還可以切換乙個前台程序到後台來執行,這裡要介紹一下懸掛所謂懸掛,就是暫停前台程序,讓其處於等待狀態,在unix中,使用ctrl + z來懸掛前台程序,使用stty命令來檢視:

bg(background)命令和fg(frontground)命令

當乙個前台程序被懸掛起來的時候,使用bg命令可以在後台繼續執行這段前台程序,使用fg命令可以再前台執行它

暫時沒太用明白這兩個命令,以後再更吧

該命令可以保持程序在其所執行的終端關閉之後仍然不會被終止,具體使用方法為:

「` nohup cmd &

預設狀態下nohup命令會自動將cmd的輸出重定向到nohup.out檔案

在正常情況下,後台程序執行的時候我們是可以在終端中進行輸入的,不過我們可以強制等待後台程序,意思就是直到後台程序結束之後,我們才能進行輸入,要達到這一目的,需要使用wait命令

shell程式設計筆記(二)

終於要開始正式寫shell指令碼了 建立陣列變數的方式,直接給陣列的索引賦值 array index value注意 index是有取值範圍的 0,1023 如果乙個標量的名字和陣列名重名,那麼該標量對應的值就會變成該陣列0索引對應的值 另一種初始化陣列的方式,可以給多個元素一次性賦值 訪問方式也在...

學習shell程式設計筆記 二

變數 含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是 1,第二個引數是 2。傳遞給指令碼或函式的引數個數。傳遞給指令碼或函式的所有引數。傳遞給指令碼或函式的所有引數。被雙引號 包含時,與 稍有不同,下面將會講到。上個命令的退出狀態,或函式的...

shell程式設計《二》

一 if語句 if expressino then code block elif expression then code block else code block fi fi 比較整 數a 和b是否 相等 if a b 也 可 用 eq 判斷整 數a是否 大於整數 b if a gt b 比較...