一、處理用戶輸入
shell中使用read命令來實現與用戶的交互輸入。
格式:read [options] 變量
常用選項:
-p “提示信息”:顯示提示信息;
-t #:等待用戶輸入的秒數;
-a:輸入數組元素。
二、生成隨機數
使用變量RANDOM可以生成隨機數,取值范圍為0-32768。
隨機數相關的設備文件:/dev/random、/dev/urandom。
三、輸出字體的控制
shell中可以對輸出的字體進行定義,下面的例子中對"hello"的字體進行了編輯。
格式說明:
\033[m\033: 對于字體定義的規定用法;
下面從左到右以分號為分隔符其含義為:
1:字體的形式,如粗體,斜體,下劃線等,取值范圍1-7;
37:字體本身的顏色;
30:黑色;
31:紅色;
32:綠色;
33:黃色;
34:藍色;
35:洋紅;
36:青色;
37:白色;
41:字符的背景色,其中4表示字體背景,下一個數字表示背景顏色取值為1-7;
40:黑色;
41:紅色;
42:綠色;
43:黃色;
44:藍色;
45:洋紅;
46:青色;
47:白色;
[0m: 表示顏色應用只限于指定字符,如不使用此選項,則下面顯示均會帶有顏色。
四、變量相關
1、獲取變量值的長度
格式:echo ${#變量名}
2、變量賦值
${parameter:-word}:如果parameter為空或未定義,則返回為"word";否則,返回parameter的值;
${parameter:+word}:如果parameter為空或未定義,則不做任何操作;否則,返回"word";
${parameter:=word}:如果parameter為空或未定義,不但返回"word";而且將parameter賦值為"word";
${parameter:?word}:如果parameter為空或未定義,則返回內容為"word"的報錯信息,否則返回parameter的值。
${parameter:offset:length}:如果將parameter偏移offset個字符,并截取length長度的字符;
五、函數中的局部變量
函數中可以定義只在函數內部生效的變量,其作用域只在函數內有效。
格式:local 變量名=值
上例的結果說明了局部變量的作用域只在函數內,再來看下未聲明為局部變量的結果:
六、創建臨時文件或目錄
命令格式:mktemp [options] [template]
常用選項:
-d:創建目錄;
template格式:name.XXX
XXX:三個大寫x,用于自動生成隨機數。
eg:mktemptemp.XXX
七、信號
1、常用的信號類型:
1:SIGHUP 掛起進程
2:SIGINT 終止進程
9:SIGKILL 強制終止進程
15:SIGTERM 正常終止進程
腳本中能實現信號捕捉,但9和15無法捕捉。
我們常用的ctrl+c快捷鍵發送的是SIGINT信號。
可以使用kill -l來查看所有的信號。
2、信號捕捉
使用trap命令可以實現信號捕捉,并針對捕捉到的信息指定想要執行的命令。
命令格式:trap “命令1;命令2” 信號列表
上例中當使用Ctrl+c時就會出現"Hi,byeybye"的信息。
上面這個腳本使用Ctrl+c無法終止,因為信號INT產生的命令為echo "go…";
trap還可以捕捉到腳本的退出,如下例所示:
可以使用單有破折線來移除捕捉命令,格式為:trap – 信號
上例中在命令行定義捕捉到INT信號時顯示"Hello”,此時只要使用Ctrl+c快捷鍵就會顯示“Hello”,只有在使用了移除命令之后才能恢復默認的信號命令。
原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10770
恭喜 petmaster 升級為免檢用戶(后面的文章無需審核)贊!