Shell腳本編程

Shell腳本編程

關于腳本的調試

    bash -n /path/to/some_script

                           檢測腳本中的語法錯誤

v  bash -x /path/to/some_script

                           調試執行

 

變量

變量:命名的內存空間

數據存儲方式:

字符:

數值:整型,浮點型 v

變量:變量類型

   作用:

        1、數據存儲格式

        2、參與的運算

        3、表示的數據范圍

類型: 字符 數值:整型、浮點型

 

bash中變量的種類

根據變量的生效范圍等標準:

    本地變量:生效范圍為當前shell進程;對當前shell之外 的其它shell進程,包括當前shell的子shell進程均無效

本地變量

v 變量賦值:name=‘value’, v

   可以使用引用value:

       (1) 可以是直接字串; name=“root"

       (2) 變量引用:name="$USER"

       (3) 命令引用:name=`COMMAND`, name=$(COMMAND) v

變量引用:${name}, $name

    "":弱引用,其中的變量引用會被替換為變量值

    '':強引用,其中的變量引用不會被替換為變量值,而保

持原字符串 v

    顯示已定義的所有變量:set v

    刪除變量:unset name

環境變量:生效范圍為當前shell進程及其子進程

環境變量

v 變量聲明、賦值:

       export name=VALUE

       declare -x name=VALUE v

   變量引用:$name, ${name} v

   顯示所有環境變量:

       export

       env

       printenv v

   刪除:unset name v

   bash有許多內建的環境變量:PATH, SHELL, USRE,UID, HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1

局部變量:生效范圍為當前shell進程中某代碼片斷(通常 指函數)

位置變量:$1, $2, …來表示,用于讓腳本在腳本代碼 中調用通過命令行傳遞給它的參數

    $1, $2, …:對應第1、第2等參數,shift [n]換位置

    $0: 命令本身

    $*: 傳遞給腳本的所有參數,全部參數合為一個字符串

    $@: 傳遞給腳本的所有參數,每個參數為獨立字符串

    $#: 傳遞給腳本的參數的個數

    $@ $* 只在被雙引號包起來的時候才會有差異

特殊變量:$?, $0, $*, $@, $#

只讀變量:

    只能聲時,但不能修改和刪除

        readonly name

        declare -r name

 

示例:判斷給出的文件的行數

    linecount="$(wc -l $1| cut -d' ' -f1)"

    echo "$1 has $linecount lines."

 

練習

1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。

Shell腳本編程 

2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中

Shell腳本編程 

3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值

Shell腳本編程 

4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序

Shell腳本編程 

5、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和

Shell腳本編程 

6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和

Shell腳本編程 

7、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件

Shell腳本編程 

8、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數

Shell腳本編程 

9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”

Shell腳本編程 

 

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

(0)
xiaoqiang512xiaoqiang512
上一篇 2016-08-15 11:58
下一篇 2016-08-15 11:59

相關推薦

  • Linux下的網絡配置方法(一)

        Linux的網絡配置方法有多種,而且隨發行版及版本而略微不同。我目前的測試環境為CentOS6和CentOS7。     常用的網絡配置命令或方法有:ifconfig,route,netstat,ip,ss,nmcli,配置文件。 一、簡介   &nb…

    Linux干貨 2015-12-15
  • sed命令用法詳解

    1.sed運行原理         sed(stream editor)是一個行處理器。處理時,把當前處理的行放到“模式空間中”,處理完畢后,把該行輸出到屏幕,接著處理下一行;這樣不斷重復,直到末行;此時文件本身內容并沒有改變 2.sed用途    …

    Linux干貨 2016-08-15
  • 文本處理工具及grep

    在日常的linux運維工作當中,我們經常要在一些文本當中抽取過濾出我們所需要的信息,從而達到我們的需求,需要特定的文本處理工具來幫我們完成此類操作 本章節主要講解的內容有: 文件查看:cat 分頁查看文本:less、more 抽取文件特定行數:head、tail 抽取文本特定列:cut 合并文本:paste 文本統計:wc 文本排序并統計:sort、uniq…

    Linux干貨 2016-08-08
  • N26第五周博客作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;grep “^[[:space:]]+” /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;grep “^#[[:space:…

    Linux干貨 2017-03-06
  • Linux系統初始化流程:系統初始化相關基礎知識

    Linux系統初始化流程:系統初始化相關基礎知識 內核簡介 內核的功能 進程管理:通過task_struct, scheduler 實現 內存管理 I/O管理:中斷以及中斷處理 文件系統管理:ext3,ext4,xfs 等 驅動程序 安全相關:SELinux,各種加密庫 通用軟件,平臺相關軟件 內核設計流派 單內核:單一體系結構 linux 為單一內核 模塊…

    2015-02-28
  • bash的特性和目錄管理命令

    bash的特性和目錄管理命令 bash特性     1. 命令補全機制: 所謂的命令補全,就是當輸入命令的前幾個字符的時候,按下tab,此時,bash根據輸入的字符串,到path路徑下進行尋找,把找到的且能唯一根據這個字符串標識的命令,予以補全。 如果根據這個字符串能在一個目錄下面找到多個相同的命令,則再按一下tab就能列出所有…

    Linux干貨 2016-10-29
欧美性久久久久