-a sun 程序設計 set 每次 image line ans 交互

一、shell基本介紹

Shell就是一個命令行解釋器它的作用是解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條,這種方式稱為交互式。

Shell還有一種執行命令的方式稱為批處理(Batch),用戶事先寫一個Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。Shell腳本是需要解釋執行的,不需要編譯,Shell程序從腳本中一行一行讀取並執行這些命令,相當於一個用戶把腳本中的命令一行一行敲到Shell提示符下執行。作為程序設計語言,它雖然不是 Linux系統內核的一部分,但它調用了系統內核的大部分功能來執行程序、創建文檔並以並行的方式協調各個程序的運行。

Linux的Shell種類眾多,不同的Shell語言的語法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種就足夠了。由於易用和免費,Bash在日常工作中被廣泛使用;同時,Bash也是大多數Linux系統默認的Shell。所以本文主要介紹bash。

二、 shell腳本

查看當前的默認shell

 [[email protected] ~]# echo $SHELL

技術分享圖片

查詢當前系統一共有哪些shell

 [[email protected] ~]# 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命令查看所有的局部變量。

[[email protected] ~]# a=666      
[[email protected] ~]# echo $$   #查看當前shell號 為3058
3058
[[email protected] ~]# echo $a   
666
[[email protected] ~]# bash      #進入子shell
[[email protected] ~]# echo $$    #查看當前shell號 為3123
3123
[[email protected] ~]# echo $a
                            #不再顯示666
[[email protected] ~]#

技術分享圖片

2、環境變量

環境變量:也叫全局變量,對當前shell和子shell均有效。env 查看所有的環境變量。

export 局部變量名
export 變量名=值

[[email protected] ~]# export name="chen"
[[email protected] ~]# echo $name
chen
[[email protected] ~]# echo $$       #查看當前shell號 為3123
3123
[[email protected] ~]# bash           #進入子shell
[[email protected] ~]# echo $$        #查看當前shell號 為3711
3711
[[email protected] ~]# echo $name
chen
[[email protected] ~]# bash             #再次進入子shell,可理解為孫shell
[[email protected] ~]# echo $$          #查看當前shell號 為3721
3721
[[email protected] ~]# echo $name
chen

通過 xport 變量名=值 設置環境變量,在當前shell有效(echo $$ 可以查看當前shell號),bash進入子shell,變量依然有效。

技術分享圖片

3、 unset 取消變量

技術分享圖片

簡單介紹linux中的shell腳本