簡單介紹linux中的shell腳本
Shell就是一個命令行解釋器,它的作用是解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條,這種方式稱為交互式。
Shell還有一種執行命令的方式稱為批處理(Batch),用戶事先寫一個Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。Shell腳本是需要解釋執行的,不需要編譯,Shell程序從腳本中一行一行讀取並執行這些命令,相當於一個用戶把腳本中的命令一行一行敲到Shell提示符下執行。作為程序設計語言,它雖然不是 Linux系統內核的一部分,但它調用了系統內核的大部分功能來執行程序、創建文檔並以並行的方式協調各個程序的運行。
Linux的Shell種類眾多,不同的Shell語言的語法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種就足夠了。由於易用和免費,Bash在日常工作中被廣泛使用;同時,Bash也是大多數Linux系統默認的Shell。所以本文主要介紹bash。
二、 shell腳本
查看當前的默認shell
[root@centos6 ~]# echo $SHELL
查詢當前系統一共有哪些shell
[root@centos6 ~]# cat /etc/shells
三、 shell執行腳本
1、shell腳本簡介
打開文本編輯器(可以使用vi/vim命令來創建文件),新建一個文件chen.sh,擴展名為sh(sh代表shell),擴展名並不影響腳本執行,見名知意就好了。
進入一個空白的文件編輯器,輸入一些代碼,第一行一般是這樣:
#!/bin/bash
shell腳本第一行必須以#!開頭,表示該腳本使用後面的解釋器解釋執行。#!是一個約定的標記,它告訴系統這個腳本需要什麽解釋器來執行,使用哪一種Shell。
2、自動創建文本
所有的腳本在編輯的時候都有標準格式,每次需要新建腳本文件時都需要添加標準格式,浪費時間。所以需要創建一個腳本文件,該腳本文件的作用是:在需要新建腳本文件時,直接使用’絕對路徑/該腳本文件名+新建腳本文件名.sh‘ 進行編輯,打開文本編輯器。
(1)首先介紹能夠自動創建文本的腳本文件,在root/bin/下創建一個 名為createsh.sh的腳本文件。
打開文本編輯器後輸入以下內容;
#!/bin/bash echo "#!/bin/bash" >$1 # echo 命令用於向窗口輸出文本 echo "#--------------------------" >>$1 #‘ #’開頭的部分為註釋內容並把內容追加'>>'到$1 echo "#Filename:$1" >>$1 # 以下內容標記具體內容並追加到$1文件 echo "#Revision:1.0" >>$1 echo "#Date:$(date +"%F")" >>$1 echo "#Author:wang" >>$1 echo "#Email:[email protected]" >>$1 echo "#Website:www.magedu.com" >>$1 echo "#Description:" >>$1 echo "#--------------------------" >>$1 echo "" >>$1 chmod +x $1 #使$1文件具有執行權限 vim + $1 #自動生成並執行$1
(2)新建名為chen.sh 的腳本文件 ,執行‘/root/bin/createsh.sh chen.sh ’命令直接進入編輯。
進入文本編輯器,裏面已經含有/root/bin/createsh.sh中的內容。
四、變量
變量分為局部變量和環境變量。
局部變量:僅對當前shell有效,子shell不繼承。
環境變量:也叫全局變量,對當前shell和子shell均有效。
1、局部變量
局部變量僅對當前shell有效,子shell不繼承!可通過set命令查看所有的局部變量。
[root@centos ~]# a=666 [root@centos ~]# echo $$ #查看當前shell號 為3058 3058 [root@centos ~]# echo $a 666 [root@centos ~]# bash #進入子shell [root@centos ~]# echo $$ #查看當前shell號 為3123 3123 [root@centos ~]# echo $a #不再顯示666 [root@centos ~]#
2、環境變量
環境變量:也叫全局變量,對當前shell和子shell均有效。env 查看所有的環境變量。
export 局部變量名
export 變量名=值
[root@centos ~]# export name="chen" [root@centos ~]# echo $name chen [root@centos ~]# echo $$ #查看當前shell號 為3123 3123 [root@centos ~]# bash #進入子shell [root@centos ~]# echo $$ #查看當前shell號 為3711 3711 [root@centos ~]# echo $name chen [root@centos ~]# bash #再次進入子shell,可理解為孫shell [root@centos ~]# echo $$ #查看當前shell號 為3721 3721 [root@centos ~]# echo $name chen
通過 xport 變量名=值 設置環境變量,在當前shell有效(echo $$ 可以查看當前shell號),bash進入子shell,變量依然有效。
3、 unset 取消變量
簡單介紹linux中的shell腳本