使用vim文本編輯器,每行一條Linux命令, 按執(zhí)行順序依次編寫:
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的南陽網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
[root@localhost ~]# vim first.sh
cd /boot/ //切換目錄
pwd //顯示當(dāng)前所在目錄
Is -Ih vml* //查看所有“vml”開頭的文件
一般文件的權(quán)限有三種,讀(r)、寫(w)、執(zhí)行(x)。通常Shell腳本寫完是不具備執(zhí)行(x)權(quán)限的,所以我們需要給予它執(zhí)行權(quán)限。
[root@localhost ~]# chmod +x first.sh //只需用chmod +x 命令后面接Shell腳本名即可
[root@localhost ~]#
方法 一:./+腳本文件路徑(必須要執(zhí)行權(quán)限才能執(zhí)行,執(zhí)行完畢不會改變當(dāng)前所在目錄)
[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 ~]#
方法二:. +腳本文件路徑(不需要執(zhí)行權(quán)限就能執(zhí)行)
[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 +腳本文件路徑(不需要執(zhí)行權(quán)限就能執(zhí)行,執(zhí)行完畢不會改變當(dāng)前所在目錄)
[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 +腳本文件路徑(不需要執(zhí)行權(quán)限就能執(zhí)行)
[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]#
一個完善的Shell腳本,還需要有腳本聲明、注釋信息、可執(zhí)行語句
[root@localhost ~]# vim first.sh
#!/bin/bash //腳本聲明,告訴系統(tǒng)這個腳本需要什么解釋器來執(zhí)行,即使用哪一種 Shell。
#This is first script //注釋信息,說明腳本的作用
cd /boot/
echo "當(dāng)前的目錄位于:" //輸出友好提示信息
pwd
echo "其中以vml開頭的文件包括:"
ls -lh vml*
完善后再次執(zhí)行腳本,效果如下:
[root@localhost ~]# ./first.sh
當(dāng)前的目錄位于:
/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 ~]#
標(biāo)準(zhǔn)輸入:從該設(shè)備接收用戶輸入的數(shù)據(jù);
標(biāo)準(zhǔn)輸出:通過該設(shè)備向用戶輸出數(shù)據(jù);
標(biāo)準(zhǔn)錯誤:通過該設(shè)備報告執(zhí)行出錯信息。
類型 | 設(shè)備文件 | 文件描述編號 | 默認(rèn)設(shè)備 |
---|---|---|---|
標(biāo)準(zhǔn)輸入 | /dev/stdin | 0 | 鍵盤 |
標(biāo)準(zhǔn)輸出 | /dev/stdout | 1 | 顯示器 |
標(biāo)準(zhǔn)錯誤輸出 | /dev/stderr | 2 | 顯示器 |
簡單的重定向輸入演示:
[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 //創(chuàng)建壓縮包,將輸出結(jié)果保存到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]#
標(biāo)準(zhǔn)錯誤輸出演示:
[root@localhost opt]# tar jxvf test.tar.gz -C /opt/ 2>> status.txt //用錯誤的格式解壓之前創(chuàng)建的壓縮包,并將輸出的錯誤信息追加到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]#
其它的我就不做演示了,大同小異。
將左側(cè)的命令輸出結(jié)果,作為右側(cè)命令的處理對象
命令格式: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 ~]#
為靈活管理Linux系統(tǒng)提供特定參數(shù),有兩層意思。
變量名:使用固定的名稱,由系統(tǒng)預(yù)設(shè)或用戶定義;
變量值:能夠根據(jù)用戶設(shè)置、系統(tǒng)環(huán)境的變化而變化。
自定義變量:由用戶自己定義、修改和使用;
環(huán)境變量:由系統(tǒng)維護(hù),用于設(shè)置工作環(huán)境;
位置變量:通過命令行給腳本程序傳遞參數(shù);
預(yù)定義變量:Bash中內(nèi)置的一類變量,不能直接修改。
變量名以英文字母或下劃線開頭,區(qū)分大小寫,首個字符不能以數(shù)字開頭。中間不能有空格,可以使用下劃線,
不能使用標(biāo)點符號,能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)。
格式:變量名=變量值
[root@localhost ~]# Product=Python
[root@localhost ~]# Version=2.7.13
[root@localhost ~]#
格式:echo $變量名
[root@localhost ~]# echo $Product
Python
[root@localhost ~]# echo $Product $Version
Python 2.7.13
[root@localhost ~]#
雙引號:允許通過$符號引用其他變量值;
[root@localhost ~]# echo "$Product"
java
[root@localhost ~]#
單引號:禁止引用其他變量值, $視為普通字符;
[root@localhost ~]# echo '$Product'
$Product
[root@localhost ~]#
反撇號:命令替換,提取命令執(zhí)行后的輸出結(jié)果。
[root@localhost ~]# ls -lh `which vim`
-rwxr-xr-x. 1 root root 2.2M 8月 2 2017 /usr/bin/vim
[root@localhost ~]#
格式:read [-p "提示信息"] 變量名
腳本內(nèi)容如下:
[root@localhost ~]# vim script.sh
#!/bin/bash
read -p "請輸入一個整數(shù):" num
echo "您輸入的整數(shù)是:$num"
執(zhí)行結(jié)果如下:
[root@localhost ~]# chmod +x script.sh
[root@localhost ~]# ./script.sh
請輸入一個整數(shù):88
您輸入的整數(shù)是:88
[root@localhost ~]#
export命令可以將一個變量設(shè)置為全局變量,不然咱們在當(dāng)前bash環(huán)境下的變量,在別的bash環(huán)境下就失效了。
格式一:export 變量名
格式二:export 變量名=變量值
[root@localhost ~]# echo $Product //輸出變量
java
[root@localhost ~]# bash //更換bash環(huán)境
[root@localhost ~]# echo $Product //輸出變量
//已經(jīng)找不到這個變量,因為這個bash環(huán)境沒有該變量
[root@localhost ~]# exit //退出,回到之前的bash環(huán)境
exit
[root@localhost ~]# export Product //將變量Product聲明為全局變量
[root@localhost ~]# bash //再次切換bash環(huán)境
[root@localhost ~]# echo $Product //輸出變量
java //輸出成功
[root@localhost ~]#
格式:expr 變量1 運算符 變量2 [運算符 變量3]...
常用運算符
加法運算:+
減法運算:-
乘法運算:\* //Linux系統(tǒng)中 “ * ” 為通配符,所以要加 “ \ ” 符號進(jìn)行轉(zhuǎn)譯
除法運算:/
求模(取余)運算:%
簡單的運算演示:
[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]#
環(huán)境變量是由系統(tǒng)提前創(chuàng)建,用來設(shè)置用戶的工作環(huán)境。
系統(tǒng)環(huán)境變量的配置文件:/etc/profile
用戶環(huán)境變量的配置文件:~/.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之間的數(shù)字。
簡單的加法腳本如下:
[root@localhost opt]# vim site.sh
#!/bin/bash
#執(zhí)行加法運算
echo "第一個位置變量的值:$1"
echo "第二個位置變量的值:$2"
sum=`expr $1 + $2`
echo "求和數(shù)為$sum"
用位置變量進(jìn)行加法運算:
[root@localhost opt]# chmod +x site.sh
[root@localhost opt]# ./site.sh 33 45
第一個位置變量的值:33
第二個位置變量的值:45
求和數(shù)為78
[root@localhost opt]#
$#:命令行中位置變量的個數(shù)
$*:所有位置變量的內(nèi)容
$?:上一條命令執(zhí)行后返回的狀態(tài),當(dāng)返回狀態(tài)值為0時表示執(zhí)行正常,非0值表示執(zhí)行異常或出錯
$0:當(dāng)前執(zhí)行的進(jìn)程/程序名
對上面的加法腳本進(jìn)行更改如下:
#!/bin/bash
#執(zhí)行加法運算
echo "第一個位置變量的值:$1"
echo "第二個位置變量的值:$2"
sum=`expr $1 + $2`
echo "求和數(shù)為$sum"
echo "變量個數(shù)為:$#"
echo "所有變量內(nèi)容:$*"
echo "當(dāng)前執(zhí)行的腳本名稱:$0"
執(zhí)行結(jié)果如下:
第一個位置變量的值:33
第二個位置變量的值:45
求和數(shù)為78
變量個數(shù)為:2
所有變量內(nèi)容:33 45
當(dāng)前執(zhí)行的腳本名稱:./site.sh
[root@localhost opt]#
執(zhí)行完畢用“echo $?”命令,看是否執(zhí)行正常(結(jié)果為0,執(zhí)行正常):
[root@localhost opt]# echo $?
0
[root@localhost opt]#
網(wǎng)頁名稱:Shell腳本編程規(guī)范與變量
文章地址:http://bm7419.com/article22/jceecc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站、做網(wǎng)站、網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)