二
變數5
位置引數變數 $0
命令自己
$1 第乙個引數
$2 第二個引數
$9 第九個引數例2
:輸出位置引數變數,指令碼後要接引數
#!/bin/bash
echo"the command is $0"
echo"canshu1 is $1"
echo"canshu2 is $2" 6
預定義變數
$? 0 上乙個命令正確執行;非
0 上乙個命令不正確
$# 統計命令之後的引數個數
$* 返回所有引數
$n 位置引數變數例3
:輸出預定義變數
#!/bin/bash
#名字為:
canshu.sh
echo"canshu zongshu $#"
echo"canshu liebiao: $*"
echo $?
附:對其賦予執行許可權:
chmod755 canshu.sh
執行:./canshu.sh1 2 3 4 5 6
7 鍵盤讀取命令
read -p 「
提示資訊」
-t 等待時間 變數名 例子
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
數值運算
變數值預設都是字串型,要想進行數值運算。以下三種任選一種 1
)declare
方法num1=123
num2=456
declare-i sum=$num1+$num2
2)sum=$(($num1 + $num2 )) #
推薦附:
$():
說明括號裡為系統命令,他會執行系統的命令
3)sum=$(expr$num1 + $num2) 注意+
左右必須空格,不然會發生錯誤如:列印:
123+456#
字串疊加 4)
運算子+ - \* / %
取餘附:
shell
程式設計的目的是為了減輕系統管理員的任務
shell
指令碼可能寫不出漂亮的介面,但是他不是用來幹這個的→ 各種程式語言都有他特殊的應用面,比如說
c語言就比
vb在數值計算方面更加精確,而
vb則在介面方面比
c更勝一籌
shutdown-r now #
系統重啟
三shell
中常用命令 1
行提取命令
grep
選項:-v
反向選擇
-n 提取時,顯示行號
舉例:grep "[^a-z]hen" test.txt
oo前不是小寫字母的行匹配。
注意:和開頭沒有關係
附:也可以結合以前的內容:
grep-n "[^a-z]hen" test_rule.txt
中括號代表乙個字母,
^代表取反,
a-z代表小寫字母a到
z grep 「\.$」 test.txt
匹配以.
結尾的行
附:在正規表示式中
$代表行尾;
\ 代表轉義符,表示,將其後緊跟字元的特殊含義消失!
linux
中行尾的空格附,也可以作為乙個字元,一定要記住!這是一些指令碼發生錯誤的原因!
grep "^[^a-za-z]" test.txt
匹配不以字母開頭的行
注意:所有字母不能這樣寫
a-z附:
^在中括號外面代表行首
grep"^[^a-za-z]" test_rule.txt #
這樣也可以
grep 「^$」 test.txt
匹配空白行
grep "oo*" test.txt
匹配最少乙個o附:
o*代表著
*前面的這個
o可以重複
0到無數多次
還可以這樣用:
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
命令用於檢視那個使用者,在那個埠等資訊下登入到系統,是乙個日誌命令 2
)awk
awk '
條件{動作}
'last| awk '' # $1
代表第一列
提取last
顯示結果的第一和第三列
\t tab
鍵\n
換行\r
回車附:也可以是:last| awk ''
last| grep "[0-9]\\.[0-9]\\.[0-9]\\.[0-9]\"| awk ''
在last
中提取包含
ip的行,然後,再在行中提取第一和第三列
awk內建變數
fs 指定分隔符
more/etc/passwd | awk 'begin '
讀取passwd
檔案,以
":"為分隔符,擷取第一和第三列
begin
在擷取前使分隔符生效。如果沒有
begin
,那麼第一行自定義的分隔符不生效
6 echo
命令echo -e 「
輸出內容」
-e 識別格式化列印內容
echo -e 「1\t2\t3」
列印tab鍵
echo -e "\e[1;31m this is red text \e[0m"
輸出紅色字型
\e[
格式標誌
1;31m
指定顏色
#30到
39之間的數字
0m 恢復顏色(重置)
附:30m=
黑色,31m=
紅色,32m=
綠色,33m=
黃色,34m=
藍色,35m=
洋紅,
36m=
青色,37=白色
echo -e 「\e[1;42 background \e[0m」
附:背景顏色:
40=黑色,
41=紅色,
42=綠色,
43=黃色,
44=藍色,
45=洋紅,
46=青色,
47=白色 例子
5:echo
輸出的小遊戲
注:cat -a
檔名顯示檔案隱,包括藏字元
取消dos
文件的回車符,兩種辦法 1
)dos2unix
文件名
#unix2dos
方向相反 2
)vi -b
文件:%s/^m//g ^m
使用 ctrl+v+m 輸入
例6:資料備份
#!/bin/bash
day=`date+%y%m%d` #
反引號!!!
#定義日期變數
附:dat=$(date+%f) #
更方便且更漂亮,列印出:
2013-12-21
size=`du-sh /var/lib/mysql`#定義
mysql
目錄大小的變數,
``符號可以換成
$()附:
sudodu -sh /etc/ #
統計/etc/
目錄的大小
echo"date: $day" >> /tmp/dbinfo.txt
#把日期輸入資訊文件
echo"data size: $size" >> /tmp/dbinfo.txt
#把大小輸入資訊文件
cd/opt/dbbak
#切換目錄
tarzcf mysqlbak-$.tar.gz /var/lib/mysql /tmp/dbinfo.txt
打包備份
mysql
目錄,同時打包資訊文件
附:在字母
zc後加
v會顯示壓縮過程
rm-f /tmp/dbinfo.txt
沈超 shell課件 四天精通shell程式設計(一)
四天精通shell程式設計 一 閱讀 981 沈超 微博 weibo.com lampsc 一shell簡介 1概念命令直譯器 2常見shell bash linux標準shell 附 她儲存在 etc bash裡面,是乙個二進位制可執行檔案,所以不能直接 vim bin bash會是亂碼 sh早期...
shell程式設計 第二天
ls l dir1 wc l 1。while 條件 do done test 2。until同上,僅僅是條件不成立的時候才執行 3。dev null unix 黑洞。用於清空檔案 cat dev null xx find name a.txt 2 dev null 4。注意 陷阱題之continue...
shell程式設計 第二天
1。while 條件 do done test 2。until同上,僅僅是條件不成立的時候才執行 3。dev null unix 黑洞。用於清空檔案 cat dev null xx find name a.txt 2 dev null 4。注意 陷阱題之continue跳出迴圈後,把列印的東東留在了...