中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell腳本編程規范與變量

發布時間:2020-05-31 06:16:36 來源:網絡 閱讀:565 作者:wx5d2c2d660c282 欄目:系統運維

主要內容

Shell腳本編程規范

  • Shell腳本應用場景
  • Shell編程規范
  • 管道與重定向

Shell腳本變量

  • 自定義變量
  • 特殊變量

Shell腳本概述

Shell腳本的概念

  • 將要執行的命令按順序保存到一個文本文件
  • 給該文件可執行權限,便可運行
  • 可結合各種Shell控制語句以完成更復雜的操作

Shell腳本應用場景

  • 重復性操作
  • 批量事務處理
  • 自動化運維
  • 服務運行狀態監控
  • 定時任務執行

編寫第一個Shell腳本

1.編寫腳本代碼

使用vim文本編輯器,每行一條Linux命令, 按執行順序依次編寫:

[root@localhost ~]# vim first.sh
cd /boot/                                               //切換目錄
pwd                                                      //顯示當前所在目錄
Is -Ih vml*                                            //查看所有“vml”開頭的文件

2.賦予可執行權限

一般文件的權限有三種,讀(r)、寫(w)、執行(x)。通常Shell腳本寫完是不具備執行(x)權限的,所以我們需要給予它執行權限。

[root@localhost ~]# chmod +x first.sh                   //只需用chmod +x 命令后面接Shell腳本名即可
[root@localhost ~]#

3.執行腳本文件

方法 一:./+腳本文件路徑(必須要執行權限才能執行,執行完畢不會改變當前所在目錄)

[root@localhost ~]# ./first.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 8月   9 23:19 vmlinuz-0-rescue-41b16d21413d4ea6b21c13fddca8e20a
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost ~]# 

方法二:. +腳本文件路徑(不需要執行權限就能執行)

[root@localhost ~]# . first.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 8月   9 23:19 vmlinuz-0-rescue-41b16d21413d4ea6b21c13fddca8e20a
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost boot]#

方法三: sh +腳本文件路徑(不需要執行權限就能執行,執行完畢不會改變當前所在目錄)

[root@localhost ~]# sh first.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 8月   9 23:19 vmlinuz-0-rescue-41b16d21413d4ea6b21c13fddca8e20a
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost ~]# 

方法四:source +腳本文件路徑(不需要執行權限就能執行)

[root@localhost ~]# source first.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 8月   9 23:19 vmlinuz-0-rescue-41b16d21413d4ea6b21c13fddca8e20a
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost boot]#

4.完善腳本構成

一個完善的Shell腳本,還需要有腳本聲明、注釋信息、可執行語句

[root@localhost ~]# vim first.sh 
#!/bin/bash                                      //腳本聲明,告訴系統這個腳本需要什么解釋器來執行,即使用哪一種 Shell。
#This is first script                         //注釋信息,說明腳本的作用
cd /boot/
echo "當前的目錄位于:"           //輸出友好提示信息
pwd
echo "其中以vml開頭的文件包括:"
ls -lh vml*

完善后再次執行腳本,效果如下:

[root@localhost ~]# ./first.sh 
當前的目錄位于:
/boot
其中以vml開頭的文件包括:
-rwxr-xr-x. 1 root root 5.7M 8月   9 23:19 vmlinuz-0-rescue-41b16d21413d4ea6b21c13fddca8e20a
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost ~]# 

重定向與管道操作

1.交互式硬件設備

標準輸入:從該設備接收用戶輸入的數據;

標準輸出:通過該設備向用戶輸出數據;

標準錯誤:通過該設備報告執行出錯信息。

類型 設備文件 文件描述編號 默認設備
標準輸入 /dev/stdin 0 鍵盤
標準輸出 /dev/stdout 1 顯示器
標準錯誤輸出 /dev/stderr 2 顯示器

2.重定向操作

Shell腳本編程規范與變量

簡單的重定向輸入演示:

[root@localhost opt]# cd /opt/
[root@localhost opt]# touch aaa.txt bbb.txt
[root@localhost opt]# ls
aaa.txt  bbb.txt  rh
[root@localhost opt]# tar czvf test.tar.gz *.txt > status.txt           //創建壓縮包,將輸出結果保存到status.txt文件
[root@localhost opt]# ls
aaa.txt  bbb.txt  rh  status.txt  test.tar.gz
[root@localhost opt]# cat status.txt                                             //查看status.txt文件
aaa.txt
bbb.txt
[root@localhost opt]#

標準錯誤輸出演示:

[root@localhost opt]# tar jxvf test.tar.gz -C /opt/ 2>> status.txt            //用錯誤的格式解壓之前創建的壓縮包,并將輸出的錯誤信息追加到status.txt文件中
[root@localhost opt]# ls
aaa.txt  bbb.txt  rh  status.txt  test.tar.gz
[root@localhost opt]# cat status.txt                                              //查看status.txt文件,可以看到追加的錯誤信息
aaa.txt
bbb.txt
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[root@localhost opt]# 

其它的我就不做演示了,大同小異。

3.管道操作符號“|”

將左側的命令輸出結果,作為右側命令的處理對象
命令格式:cmd1 | cmd2 [.. I cmdn]

[root@localhost ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
jiang:x:1000:1000:jiang:/home/jiang:/bin/bash
[root@localhost ~]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7}'
root /bin/bash
jiang /bin/bash
[root@localhost ~]#

Shell變量的作用、類型

1.變量的作用

為靈活管理Linux系統提供特定參數,有兩層意思。
變量名:使用固定的名稱,由系統預設或用戶定義;
變量值:能夠根據用戶設置、系統環境的變化而變化。

2.變量的類型

自定義變量:由用戶自己定義、修改和使用;
環境變量:由系統維護,用于設置工作環境;
位置變量:通過命令行給腳本程序傳遞參數;
預定義變量:Bash中內置的一類變量,不能直接修改。

自定義變量

1.定義一個新變量

變量名以英文字母或下劃線開頭,區分大小寫,首個字符不能以數字開頭。中間不能有空格,可以使用下劃線,
不能使用標點符號,能使用bash里的關鍵字(可用help命令查看保留關鍵字)。

格式:變量名=變量值

[root@localhost ~]# Product=Python
[root@localhost ~]# Version=2.7.13
[root@localhost ~]# 

2.查看變量的值

格式:echo $變量名

[root@localhost ~]# echo $Product 
Python
[root@localhost ~]# echo $Product $Version
Python 2.7.13
[root@localhost ~]#

3.賦值時的符號

雙引號:允許通過$符號引用其他變量值;

[root@localhost ~]# echo "$Product"
java
[root@localhost ~]#

單引號:禁止引用其他變量值, $視為普通字符;

[root@localhost ~]# echo '$Product'
$Product
[root@localhost ~]#

反撇號:命令替換,提取命令執行后的輸出結果。

[root@localhost ~]# ls -lh `which vim`
-rwxr-xr-x. 1 root root 2.2M 8月   2 2017 /usr/bin/vim
[root@localhost ~]#

4.從鍵盤輸入內容為變量賦值

格式:read [-p "提示信息"] 變量名

腳本內容如下:

[root@localhost ~]# vim script.sh
#!/bin/bash
read -p "請輸入一個整數:" num
echo "您輸入的整數是:$num"

執行結果如下:

[root@localhost ~]# chmod +x script.sh 
[root@localhost ~]# ./script.sh 
請輸入一個整數:88
您輸入的整數是:88
[root@localhost ~]#

5.設置變量的作用范圍

export命令可以將一個變量設置為全局變量,不然咱們在當前bash環境下的變量,在別的bash環境下就失效了。

格式一:export 變量名
格式二:export 變量名=變量值

[root@localhost ~]# echo $Product                      //輸出變量
java
[root@localhost ~]# bash                                      //更換bash環境
[root@localhost ~]# echo $Product                     //輸出變量
                                                                                 //已經找不到這個變量,因為這個bash環境沒有該變量
[root@localhost ~]# exit                                       //退出,回到之前的bash環境
exit
[root@localhost ~]# export Product                   //將變量Product聲明為全局變量
[root@localhost ~]# bash                                   //再次切換bash環境
[root@localhost ~]# echo $Product                 //輸出變量
java                                                                      //輸出成功
[root@localhost ~]#

6.整數變量的運算

格式:expr 變量1 運算符 變量2 [運算符 變量3]...

常用運算符

加法運算:+
減法運算:-
乘法運算:\*                          //Linux系統中 “ * ” 為通配符,所以要加 “ \ ” 符號進行轉譯
除法運算:/
求模(取余)運算:%

簡單的運算演示:

[root@localhost opt]# expr 11 + 22
33
[root@localhost opt]# expr 11 - 22
-11
[root@localhost opt]# expr 6 / 2
3
[root@localhost opt]# expr 6 \* 2
12
[root@localhost opt]# expr 6 % 4
2
[root@localhost opt]#

特殊的Shell變量

環境變量

環境變量是由系統提前創建,用來設置用戶的工作環境。

系統環境變量的配置文件:/etc/profile

用戶環境變量的配置文件:~/.bash_profile

常見的環境變量

PWD、PATH、USER、SHLLE、HOME

[root@localhost opt]# echo $PWD
/opt
[root@localhost opt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost opt]# echo $USER
root
[root@localhost opt]# echo $HOME
/root
[root@localhost opt]# echo $SHELL
/bin/bash
[root@localhost opt]#

位置變量

表示為 $n,n為1~9之間的數字。

Shell腳本編程規范與變量

簡單的加法腳本如下:

[root@localhost opt]# vim site.sh
#!/bin/bash
#執行加法運算
echo "第一個位置變量的值:$1"
echo "第二個位置變量的值:$2"
sum=`expr $1 + $2`
echo "求和數為$sum"

用位置變量進行加法運算:

[root@localhost opt]# chmod +x site.sh 
[root@localhost opt]# ./site.sh 33 45
第一個位置變量的值:33
第二個位置變量的值:45
求和數為78
[root@localhost opt]# 

預定義變量

$#:命令行中位置變量的個數
$*:所有位置變量的內容
$?:上一條命令執行后返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯
$0:當前執行的進程/程序名

對上面的加法腳本進行更改如下:

#!/bin/bash
#執行加法運算
echo "第一個位置變量的值:$1"
echo "第二個位置變量的值:$2"
sum=`expr $1 + $2`
echo "求和數為$sum"
echo "變量個數為:$#"
echo "所有變量內容:$*"
echo "當前執行的腳本名稱:$0"

執行結果如下:

第一個位置變量的值:33
第二個位置變量的值:45
求和數為78
變量個數為:2
所有變量內容:33 45
當前執行的腳本名稱:./site.sh
[root@localhost opt]#

執行完畢用“echo $?”命令,看是否執行正常(結果為0,執行正常):

[root@localhost opt]# echo $?
0
[root@localhost opt]#
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

井冈山市| 泸水县| 容城县| 吕梁市| 泽库县| 信丰县| 牙克石市| 岳阳市| 宁晋县| 三亚市| 内江市| 阜宁县| 汶川县| 金秀| 卫辉市| 司法| 林州市| 青神县| 成安县| 锡林郭勒盟| 广元市| 吴堡县| 茌平县| 军事| 龙泉市| 普兰店市| 轮台县| 崇文区| 富锦市| 赣州市| 神木县| 攀枝花市| 阳朔县| 三都| 平山县| 舒兰市| 历史| 五莲县| 襄汾县| 海丰县| 大化|