1. 程式人生 > >shell腳本基礎 -----簡單腳本的實現

shell腳本基礎 -----簡單腳本的實現

gin ims exp shell 內容 第一個 快速 wid soft

運行環境:centos7
一、shell腳本的簡單介紹
shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。
-- shell是一種腳本語言;
-- 可以使用邏輯判斷、循環等語法;
-- 可自定義函數;
-- shell是系統命令的集合;
-- shell腳本可以實現自動化運維,能大大增加我們的運維效率
可以在當前系統查看當前默認shell

echo $SHELL
技術分享圖片


二、shell腳本的變量

1、局部變量

局部變量的作用域被限定在創建它們的shell中。local函數可以用來創建局部變量,但僅限於函數內使用。局部變量可以通過簡單的賦予它一個值或一個變量名來設置,用declare內置函數來設置,或者省略也可。局部變量僅對當前shell有效,子shell不繼承!可通過set命令查看所有的局部變量。

技術分享圖片

實驗證明設置的變量只在當前shell有效。

2、全局變量

全局變量通常又稱環境變量,以區別於局部變量,全局變量,顧名思義,不僅僅對當前的shell有效,也對子shell有效,export局部變量名稱可以設置為全局變量。

export 變量=值

[root@localhost^.^ ~]#export Name="guodong" (設置全局變量)
[root@localhost^.^ ~]#echo $Name
guodong
[root@localhost^.^ ~]#bash (進入子shell)
[root@localhost^.^ ~]#echo $$(查看當前shell號)

10933
[root@localhost^.^ ~]#echo $Name
guodong
[root@localhost^.^ ~]#bash (進入‘孫子’shell)
[root@localhost^.^ ~]#echo $$(查看當前shell號)
10962
[root@localhost^.^ ~]#echo $Name
guodong
[root@localhost^.^ ~]#

技術分享圖片

bash命令可以進入子shell,當前shell號為10933,查看變量依舊繼承,繼續進入‘孫子’shellshell號為10962,查看變量仍然繼承,故設置的為全局變量。

export設置的全局變量只在當前終端有效。

設置全局環境變量,對所有用戶都生效

  • etc/profile: 此文件為系統的每個用戶設置環境信息。當用戶登錄時,該文件被執行一次,並從 /etc/profile.d 目錄的配置文件中搜集shell 的設置。一般用於設置所有用戶使用的全局變量。

  • /etc/bashrc:bash shell 被打開時,該文件被讀取。也就是說,每次新打開一個終端 shell,該文件就會被讀取。

修改/etc/profile文件後需要重新啟動才能生效,也可用source命令使其立即生效


3、位置變量

就是Bash將傳遞給腳本的參數保存在位置變量中,以便於在腳本中引用這些參數

直接舉例說明:

人生的第一個腳本

以後大家肯定會寫大量的腳本,所以可以創建一個簡單的腳本自動生成所需要的腳本文件,自動進入該文件編輯,並擁有標準格式。

#!/bin/bash (#!約定的標記,告訴系統使用哪一種shell)

echo "#!/bin/bash" >$1 將雙引號裏面的內容添加到$1文件裏面,如果有,則覆蓋,沒有就創建

echo "# ------------------------------------------" >>$1 追加內容到該$1文件裏
echo "#Filename: $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 "#helloworld" >>$1
echo " " >>$1
chmod +x $1(自動給$1文件添加權限)
vim + $1 (自動進入該$1文件裏面編輯)

技術分享圖片

通過/root/bin/腳本文件名稱 新創建的文件名稱 執行腳本

技術分享圖片

當執行時自動進入vim編輯該文件模式

技術分享圖片

就這樣第一個腳本寫好了!這也是一個位置變量的例子。(#後面是註釋內容,執行腳本時系統不執行)


4、變量賦值

直接舉例

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

通過上面創建的腳本可以快速創建一個新的標準的腳本文件。

該文件的內容如下:

#!/bin/bash

GESHU=$(ls -d /etc/*|wc -l) (將查找的etc目錄下所有文件(不包括隱藏文件)列出並通過wc -l 顯示個數,將變量的值賦值給GESHU

GESHU1=$(ls -d /etc/.*|wc -l) (將查找的etc目錄下所有隱藏文件列出並通過wc -l 顯示個數,將變量的值賦值給GESHU1

GESHU2=$(ls -d /var/*|wc -l) (將查找的var目錄下所有文件(不包括隱藏文件)列出並通過wc -l 顯示個數,將變量的值賦值給GESHU2

GESHU3=$(ls -d /var/.*|wc -l) (將查找的var目錄下隱藏文件列出並通過wc -l 顯示個數,將變量的值賦值給GESHU3

GESHU4=$(ls -d /usr/*|wc -l) (將查找的usr目錄下所有文件(不包括隱藏文件)列出並通過wc -l 顯示個數,將變量的值賦值給GESHU4

GESHU5=$(ls -d /usr/.*|wc -l) (將查找的usr目錄下所有隱藏文件列出並通過wc -l 顯示個數,將變量的值賦值給GESHU5Sum=$[$GESHU+$GESHU1+$GESHU2+$GESHU3+$GESHU4+$GESHU5](將五個文件的值進行加減操作,將變量值賦值給Sum
echo /etc/var/usr目錄中共有$Sum個!!!!


技術分享圖片

技術分享圖片

當然可以通過ls -a 命令直接列出所有文件,包括隱藏文件。



shell腳本基礎 -----簡單腳本的實現