shell腳本編程之補充知識點

一、處理用戶輸入

  shell中使用read命令來實現與用戶的交互輸入。

  格式:read [options] 變量

   常用選項:

     -p “提示信息”:顯示提示信息;

     -t #:等待用戶輸入的秒數;

     -a:輸入數組元素。

1.jpg

二、生成隨機數

  使用變量RANDOM可以生成隨機數,取值范圍為0-32768。

1.jpg

  隨機數相關的設備文件:/dev/random、/dev/urandom。

三、輸出字體的控制

  shell中可以對輸出的字體進行定義,下面的例子中對"hello"的字體進行了編輯。

2.jpg

  格式說明:

    \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 ${#變量名}

1.jpg

  2、變量賦值

    ${parameter:-word}:如果parameter為空或未定義,則返回為"word";否則,返回parameter的值;

1.jpg

    ${parameter:+word}:如果parameter為空或未定義,則不做任何操作;否則,返回"word";

2.jpg

    ${parameter:=word}:如果parameter為空或未定義,不但返回"word";而且將parameter賦值為"word";

3.jpg 

    ${parameter:?word}:如果parameter為空或未定義,則返回內容為"word"的報錯信息,否則返回parameter的值。

4.jpg

    ${parameter:offset:length}:如果將parameter偏移offset個字符,并截取length長度的字符;

5.jpg

五、函數中的局部變量 

  函數中可以定義只在函數內部生效的變量,其作用域只在函數內有效。 

  格式:local 變量名=值

1.jpg

  上例的結果說明了局部變量的作用域只在函數內,再來看下未聲明為局部變量的結果:

5.jpg

六、創建臨時文件或目錄

  命令格式:mktemp [options] [template]

    常用選項:

      -d:創建目錄;

    template格式:name.XXX 

      XXX:三個大寫x,用于自動生成隨機數。

      eg:mktemptemp.XXX

1.jpg

七、信號

  1、常用的信號類型:

    1:SIGHUP  掛起進程

    2:SIGINT  終止進程

    9:SIGKILL  強制終止進程

    15:SIGTERM  正常終止進程

  腳本中能實現信號捕捉,但9和15無法捕捉。

  我們常用的ctrl+c快捷鍵發送的是SIGINT信號。

  可以使用kill -l來查看所有的信號。

 2、信號捕捉

   使用trap命令可以實現信號捕捉,并針對捕捉到的信息指定想要執行的命令。 

   命令格式:trap “命令1;命令2” 信號列表

1.jpg

   上例中當使用Ctrl+c時就會出現"Hi,byeybye"的信息。

1.jpg

   上面這個腳本使用Ctrl+c無法終止,因為信號INT產生的命令為echo "go…";

2.jpg

   trap還可以捕捉到腳本的退出,如下例所示:

1.jpg

    可以使用單有破折線來移除捕捉命令,格式為:trap – 信號

1.jpg

    上例中在命令行定義捕捉到INT信號時顯示"Hello”,此時只要使用Ctrl+c快捷鍵就會顯示“Hello”,只有在使用了移除命令之后才能恢復默認的信號命令。

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10770

(0)
petmasterpetmaster
上一篇 2016-02-14
下一篇 2016-02-14

相關推薦

  • 聊聊CentOS6的啟動過程

    前言:     作為一個合格的運維人員,系統的啟動過程我們需要牢記在心,此文不深入探討,只求大致理解CentOS6的啟動過程。 一張圖帶你了解CentOS6的啟動過程 注意:圖片放大查看效果更佳 上圖各階段詳解 POST:計算機開機時BIOS對其各硬件的簡單測試,測試各硬件的完整性 BootSqunce:加電自檢后根據…

    Linux干貨 2016-03-14
  • 分享我自己的一個最小化安裝CentOS6的初始化腳本

    #!/bin/bash # #Filename:postinstall_init.sh #Description:系統安裝完成后,對系統進行一些配置,以符合自己的試驗環境 #Author:renpingsheng #Email:995883352@qq.com #Version:1.0 #Date:2017.5.5 setenforce 0 #更改selin…

    Linux干貨 2017-05-07
  • 20160801作業-用戶和組

    http://note.youdao.com/yws/public/redirect/share?id=ba6a68550cd5c0ba5fd1cbfb66651916&type=false

    Linux干貨 2016-08-08
  • 重構與模式:改善代碼三部曲中的第三部

    一、改善代碼的三部曲    《設計模式》-> 《重構》-> 《重構與模式》。也就是設計->重構->重構出新設計。    《設計模式》主要詳細說明20幾種模式,為我們帶來了常見設計問題的經典解決方案,從而改變了整個面向對象開發的面貌。為設計而著。    《重構》改善既有代碼的設…

    Linux干貨 2015-04-07
  • yum倉庫搭建

    兩臺主機: 一臺centos7? 客戶機 一臺centos6 ?服務器 準備工作 1.查看是否共享服務是否可用 httpd或vsftpd 是否安裝。確認安裝之后選擇vsftpd為共享服務/var/www/html和/var/ftp/pub為共享目錄。 這里使用vsftpd,/var/ftp/pub這個目錄為共享目錄 在這個目錄下建立一個獨立的文件夾 [roo…

    2017-12-01
  • 數據結構- 串的模式匹配算法:BF和 KMP算法

    Brute-Force算法的思想 1.BF(Brute-Force)算法   Brute-Force算法的基本思想是: 1) 從目標串s 的第一個字符起和模式串t的第一個字符進行比較,若相等,則繼續逐個比較后續字符,否則從串s 的第二個字符起再重新和串t進行比較。 2) 依此類推,直至串t 中的每個字符依次和串s的一個連續的字符序列相等,則稱模式匹…

    Linux干貨 2015-04-07

評論列表(1條)

  • stanley
    stanley 2016-02-14 10:02

    恭喜 petmaster 升級為免檢用戶(后面的文章無需審核)贊!

欧美性久久久久