標籤:139郵箱 local world 簡訊 記錄
1.shell指令碼就是一些命令的集合。把需要執行的一組命令記錄到文檔中,再去調用這個文檔。
139郵箱,收到郵件同時受到簡訊通知。
shell腳步編寫建議:自訂指令碼放到/usr/local/sbin目錄下
2.第一個shell指令碼
vim firstshell.sh
#! /bin/bash
##this is my first shell script
##writen by jason 2015-07-02
date
echo "Hello world !"
#! /bin/bash,開頭第一行,表示該檔案使用bash文法
.sh尾碼,習慣
#後面跟的注釋,良好習慣,便於以後查看腳步
執行指令碼:sh firstshell.sh 或者 ./firstshell.sh(有時缺少許可權時,chmod修改)
3.指令碼中變數的使用
vi variable.sh
#! /bin/bash
## In thie shell script we will use variables
## writen by jason 2015-07-02
d=`date +%H:%M:%S`
echo "This script begin at $d"
echo "Now we will sleep 2 seconds."
sleep 2
d1=`date +%H:%M:%S`
echo "This script end at $d1"
變數d和d1的定義時,使用反引號` `,變數內容使用到其他命令的結果(shell腳步基礎知識部落格中)。
指令碼總引用變數,需加上$
3.1 數值運算,兩個數的和 sum
vi sum.sh
#! /bin/bash
## Sum of tow numbers
## By jason 20150702
a=1
b=2
sum=$[$a+$b]
echo $sum
數學計算,要用[ ]括起來,並且最外面要加一個 $
3.2使用者互動,使用者輸入
vi read.sh
#! /bin/bash
## Use "read" in shell script
## By jason 20150702
read -p "Please input a number:" x
read -p "Please input anoter number" y
sum=$[$x+$y]
echo "The sum of two number is : $sum"
read就是用在和和使用者互動,把使用者輸入的字串作為變數值
-x 查看shell執行的過程,sh -x read.sh
3.3 shell預設變數 $1,$2,$0(列印指令碼本身的名字)
vi option.sh
#! /bin/bash
##
##
sum=$[$1+$2]
exho "sum=$sum"
sh option.sh 3 7
sum=10
$1,$2就是shell腳步預設的變數,預設設定好的,按順序輸入兩個數字,預設賦值變數$1=3,$2=7.
同樣$3,$4,$5依次後推也是預設變數。
4.指令碼中邏輯判斷if,if...else,if..elif..else
4.1 vi iftest1.sh
#! /bin/bash
##
##
read -p "Input your score: " a
if (($a<60)); then if 判斷語句 ; then
echo "Didn‘t pass the exam." commond
fi fi
(($a<60)),shell腳步中專屬的格式,必須使用兩個()
文法格式:if 判斷語句;then
匹配結果執行相應的命令
4.2 if ..else
vi iftest2.sh
#! /bin/bash
##
##
read -p "Iput your score: " a
if (($a<60));then if 判斷語句 ;then
echo "Do not pass." commond
else else
echo "Good ! pass the exam." commond
fi fi
4.3 if..esif..else
vi iftest3.sh
#! /bin/bash
##
##
read -p "Input your score: " a
if (($a<60)); then
echo "do not pass."
elif(($a>=60))&&(($a<80)); then
echo "good,pass."
else echo "Very good,high."
兩個判斷語句通過&&或者||一起時,需要用兩個(( ))隔開,單獨判斷
判斷數值大小除(( ))形式外,還有[ ],但需用-lt(小於),-gt(大於),-le(小於等於),-ge(大於等於),-eq(等於),-ne(不等於)
if [$a -lt 60]; then
if [$a -gt 60] || [$a -lt 80]; then ....
4.4 判斷文件屬性
-e 判斷檔案或目錄是否存在;-d 判斷是否為目錄,並存在;-f 判斷是否為普通檔案,並存在
;-r 判斷文檔是否可讀;-w 是否可行;-x 是否可執行。
if [ -f /root/test.txt ]; then echo "It is file."; fi
[ ]前後一定要加空格,不然報錯。
5.指令碼邏輯判斷 case
vi case.sh
#! /bin/bash
##
##
read -p "Input a number: " n
a=$[$n%2]
case $a in case 變數 in
1) value1)
echo "the number is odd." commond
;; ;;
0) value2)
echo "the number is even." commond
;; ;;
*)
echo "this is not a number"
;;
esac
不限判斷value值的個數。
6.指令碼中的迴圈 for
vi fortest.sh
#! /bin/bash
for i in `seq 1 5`; do for 變數名 in 迴圈條件 ;do
echo $i command
done done
迴圈條件seq 1 5表示從1-5的序列
6.1 迴圈條件寫成一組字串或者數字,也可以是一條命令執行的結果
for i in 1 2 3 4 a b; do echo $i; done
for file in `ls`; do echo $file; done
7.指令碼中的迴圈 while
vi whiletest.sh
#! /bin/bash
a=5
while [$a -ge 1]; do while 迴圈條件;do
echo $a command
a=$[$a-1]
done done
8.shell指令碼中函數
函數:就是把一段代碼整理到一個小單元中,起個名字,調用這個單元的名字即可。
vi func.sh
#! /bin/bash
function sum() function 函數名()
{ {
sum=$1+$2 command
echo $sum
} }
sum $1 $2 調用函數
在shell指令碼中,函數一定要寫在最前面,不能出現在後面或中間,必須在最前面申明,才能為後面調用。
Shell腳步編寫