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 10:00
下一篇 2016-02-14 10:03

相關推薦

  • Linux基礎學習總結(一)

    一、計算機的組成與功能 二、Linux的版本 三、Linux的哲學思想 四、Linux基礎命令(一) 五、Linux幫助信息 六、Linux目錄結構

    Linux干貨 2016-09-20
  • 系統自動化安裝、selinux

    系統自動化安裝 系統啟動流程:bootloader–>kernel(initramfs)–>rootfs–>anaconda–>/sbin/init anaconda: 系統安裝程序    tui: 基于圖形庫curses的文本配置窗口 &nbsp…

    Linux干貨 2016-09-22
  • 為什么中國的網頁設計那么爛?

    Nick Johnson,一個有12年經驗的Web設計師在它的blog里寫下了“Why is Chinese Web Design So Bad”,新浪,人人,百度,阿里巴巴,騰訊榜上有名。其中的觀點相當的好,希望所有的中國人都讀一下。我不全文翻譯了,只是給大家看一些摘要。(保證不會像《環球時報》一樣) —————————— 作者2005年的夏天來到中國,他…

    Linux干貨 2016-07-11
  • 深入了解磁盤結構

    一、     linux中常見的磁盤:   無論什么操作系統,歸根還是要落實與磁盤上的,對于磁盤的管理也是linux管理必備的一項技能。在linux中“一切皆文件”的思想貫徹整個linux的學習中,包括像是磁盤等的硬件也是在linux的/dev/目錄下類似于文件形式的存放,常見的SATA口USB優盤或是SCS…

    Linux干貨 2016-08-29
  • N21天天第十四周課程練習

    系統的INPUT和OUTPUT默認策略為DROP; #把默認策略設置為DROP [root@localhost ~]# iptables -P INPUT DROP [root@localhost ~]# iptables -P OUTPUT DROP 1、限…

    Linux干貨 2016-12-05
  • nginx+keepalived構建負載均衡代理服務器

    實驗環境: 1、centos7.3 centos6.82、兩臺VS提供nginx代理和keepalived3、兩臺RS提供httpd服務并部署wordpress4、另外一臺提供Mysql數據庫服務 實驗拓撲圖: 拓撲圖 實驗步驟 1、在vs1(172.18.251.4)上配置,用yum安裝keepalived和nginx yum install -y kee…

    Linux干貨 2017-05-21

評論列表(1條)

  • stanley
    stanley 2016-02-14 10:02

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

欧美性久久久久