個人理解:shell腳本就是把一些連續作用的linux命令集成在一個文件中,共同完成某項任務。
1、變量定義:
a="/ipaddata/logs/bmc"
b=·pwd·
· · 是Esc鍵下的波浪鍵, 放在裏面的內容是一個基本的linux命令,比如這裏的pwd就是現實當前目錄。
2、變量的使用:
通過 ${變量名} 得到變量的值,也可以直接 $變量名 來獲取變量值,比如 ${a} -> "/ipaddata/logs/bmc" ${b} -> 當前路徑
3、echo命令
echo是輸出語句,後接參數可以直接在界面輸出參數內容,如:
echo “123” 會在當前界面輸出123
*把內容輸出到某文件中的語句: 例如: echo “123”<<${a}/mytest.log 可以在指定路徑下生成mytest.log文件,並且把echo後面的參數寫到該文件中。
4、date命令
輸出系統日期:
date +“某種日期格式",比如:date +"%Y%m%d" 會輸出 20130105
此處的雙引號也可以省略, 但建議加上
5、shell腳本用#註釋
6、shell是一種函數式語言
函數定義:
func1(){
...
}
如果函數func1接受參數,也是這樣定義的,不會像java那樣把參數顯示的指定出來,
函數調用:
func1 param1 param2
方法名後面空格,然後是第一個參數, 再空格,第二個參數。
在函數體中,取第一個參數值用 $1 取第二個參數值用 $2,以此類推。
7、if else語句
shell中的if else格式如下:
if [判斷條件];
then
如果條件成立執行這裏
else
如果條件不成立執行這裏
fi
fi 和 if 對應, 表示一個if語句的結束,then中還可以繼續嵌套,嵌套時如果else後緊跟if,要寫成:
elif [判斷條件];
then
條件成立執行...
else
條件不成立執行...
這種語句不需要用fi來結束 elif,也不能這樣用,否則會造成語法錯誤。
8、vi編輯器:
%s/^M//g 去掉換行符號^M(常由保存格式不同引起)在linux系統中 ^M的打法: 按住ctrl+v+m
a 前光標後添加(追加),
i 當前光標位置添加(插入)
x 刪除當前光標下的字符,
dd 刪除一整行,
:x 退出編輯狀態並保存,
:q! 退出編輯狀態不保存,
$ 光標跳到行末尾
shift+g 光標跳到文本末尾
注意,在每兩個不同的命令輸入前,最好按下ESC鍵,以免引起混亂
9、exit
exit是表示退出當前腳本,不再向下繼續執行,
exit相當於return ,表示某次調用的返回 或者是 執行某個命令的返回,exit 0表示調用成功,exit 1表示調用失敗
exit n 是對退出碼的設置 也就是 n=0時成功,n=非0時失敗。
exit不加任何參數表示直接退出,退出碼的值保持不變,保持最近一次設置
用 $? 取到最近一次的退出碼值。