二變量
5位置參數(shù)變量
$0命令自己
$1第一個(gè)參數(shù)
$2第二個(gè)參數(shù)
$9第九個(gè)參數(shù)
例2:輸出位置參數(shù)變量,腳本后要接參數(shù)
#!/bin/bash
echo"the command is $0"
echo"canshu1 is $1"
echo"canshu2 is $2"
6預(yù)定義變量
$?上一個(gè)命令的返回值:0上一個(gè)命令正確執(zhí)行;非0上一個(gè)命令不正確
$#統(tǒng)計(jì)命令之后的參數(shù)個(gè)數(shù)
$*返回所有參數(shù)
$n位置參數(shù)變量
例3:輸出預(yù)定義變量
#!/bin/bash
#名字為:canshu.sh
echo"canshu zongshu $#"
echo"canshu liebiao: $*"
echo $?
附:
對(duì)其賦予執(zhí)行權(quán)限:chmod755 canshu.sh
執(zhí)行:./canshu.sh2 2 3 4 5 6
7鍵盤讀取命令
read -p “提示信息”-t等待時(shí)間 變量名
例子4:通過read讀入變量值
#!/bin/bash
read-p "please input num1:" -t 30 test1
read-p "input num2:" -t 30 test2
sum=$(($test1 + $test2))
echo“num1 + num2 = $sum”
8數(shù)值運(yùn)算
變量值默認(rèn)都是字符串型,要想進(jìn)行數(shù)值運(yùn)算。以下三種任選一種
1)declare方法
num1=123
num2=456
declare-i sum=$num1+$num2
2)sum=$(($num1 + $num2 )) #推薦
附:
$():說明括號(hào)里為系統(tǒng)命令,他會(huì)執(zhí)行系統(tǒng)的命令
3)sum=$(expr$num1 + $num2)注意+左右必須空格,不然會(huì)發(fā)生錯(cuò)誤如:打?。?23+456#字符串疊加
4)運(yùn)算符
+ - \* / %取余
附:
shell編程的目的是為了減輕系統(tǒng)管理員的任務(wù)
shell腳本可能寫不出漂亮的界面,但是他不是用來干這個(gè)的→ 各種編程語言都有他特殊的應(yīng)用面,比如說C語言就比VB在數(shù)值計(jì)算方面更加精確,而VB則在界面方面比C更勝一籌
shutdown-r now #系統(tǒng)重啟
三 shell中常用命令
1行提取命令grep
選項(xiàng): -v反向選擇
-n提取時(shí),顯示行號(hào)
舉例:
grep "[^a-z]hen" test.txt
oo前不是小寫字母的行匹配。注意:和開頭沒有關(guān)系
附:也可以結(jié)合以前的內(nèi)容:grep-n "[^a-z]hen" test_rule.txt
中括號(hào)代表一個(gè)字母,^代表取反,a-z代表小寫字母a到z
grep “\.$” test.txt
匹配以.結(jié)尾的行
附:在正則表達(dá)式中$代表行尾;
\代表轉(zhuǎn)義符,表示,將其后緊跟字符的特殊含義消失!
Linux中行尾的空格附,也可以作為一個(gè)字符,一定要記??!這是一些腳本發(fā)生錯(cuò)誤的原因!
grep "^[^A-Za-z]" test.txt
匹配不以字母開頭的行注意:所有字母不能這樣寫A-z
附:
^在中括號(hào)外面代表行首
grep"^[^a-zA-Z]" test_rule.txt #這樣也可以
grep “^$” test.txt
匹配空白行
grep "oo*" test.txt
匹配最少一個(gè)o
附:o*代表著*前面的這個(gè)o可以重復(fù)0到無數(shù)多次
還可以這樣用:grep"hh*o" test_rule.txt
這樣:grep"ooo" test_rule.txt
2列提取命令
1) cut
cut -d “分隔符”-f提取列 文件名
如:cut-d ":" -f 1,3 /etc/passwd
more/etc/passwd | grep "/bin/bash" | cut -d ":" -f1,3
提取passwd文件中可以登錄的用戶的用戶名和UID
附:這里1,3之后就不用加文件名了
last命令用于查看那個(gè)用戶,在那個(gè)端口等信息下登錄到系統(tǒng),是一個(gè)日志命令
2) awk
awk '條件{動(dòng)作}'
last| awk '{printf $1 "\t" $3 "\n"}' # $1代表第一列
提取last顯示結(jié)果的第一和第三列
\t tab鍵
\n換行
\r回車
附:也可以是:last| awk '{printf $1 "\t" $3 "\t" $4 "\n"}'
last| grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"| awk '{printf $1 "\t" $3 "\n"}'
在last中提取包含ip的行,然后,再在行中提取第一和第三列
awk內(nèi)置變量 FS指定分隔符
more/etc/passwd | awk 'BEGIN {FS=":"} {printf $1 "\t"$3 "\n"}'
讀取passwd文件,以":"為分隔符,截取第一和第三列
BEGIN在截取前使分隔符生效。如果沒有BEGIN,那么第一行自定義的分隔符不生效
6 echo命令
echo -e “輸出內(nèi)容”
-e識(shí)別格式化打印內(nèi)容
echo -e “1\t2\t3”打印tab鍵
echo -e "\e[1;31m this is red text \e[0m"輸出紅色字體
\e[格式標(biāo)志
1;31m指定顏色#30到39之間的數(shù)字
0m恢復(fù)顏色(重置)
附:30m=黑色,31m=紅色,32m=綠色,33m=×××,34m=藍(lán)色,35m=洋紅,36m=青色,37=白色
echo -e “\e[1;42 background \e[0m”
附:背景顏色:40=黑色,41=紅色,42=綠色,43=×××,44=藍(lán)色,45=洋紅, 46=青色,47=白色
例子5:echo輸出的小游戲
注: cat -A文件名顯示文件隱,包括藏字符
取消dos文檔的回車符,兩種辦法
1)dos2unix文檔名#unix2dos方向相反
2)vi -b文檔
:%s/^M//g ^M使用ctrl+v+m輸入
例6:數(shù)據(jù)備份
#!/bin/bash
DAY=`date+%Y%m%d` #反引號(hào)?。?!
#定義日期變量
附:DAT=$(date+%F) #更方便且更漂亮,打印出:2013-12-21
SIZE=`du-sh /var/lib/mysql`
#定義mysql目錄大小的變量,``符號(hào)可以換成$()
附:sudodu -sh /etc/ #統(tǒng)計(jì)/etc/目錄的大小
echo"Date: $DAY" >> /tmp/dbinfo.txt
#把日期輸入信息文檔
echo"Data Size: $SIZE" >> /tmp/dbinfo.txt
#把大小輸入信息文檔
cd/opt/dbbak
#切換目錄
tarzcf mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt
打包備份mysql目錄,同時(shí)打包信息文檔
附:在字母zc后加v會(huì)顯示壓縮過程
rm-f /tmp/dbinfo.txt
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享名稱:四天精通shell編程(二)-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://aaarwkj.com/article30/cdhepo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、電子商務(wù)、軟件開發(fā)、商城網(wǎng)站、微信公眾號(hào)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容