shell文件以.sh結尾,這是一種習慣而已。第一行以#! /bin/bash開頭;表示該文件使用的是bash語法; 如果不設置該行,你的shell腳本也可以執行,但是不符合規範。#表示註釋。 # vim first.sh 輸入以下內容 #! /bin/bash date echo "Hello w ...
shell文件以.sh結尾,這是一種習慣而已。第一行以#! /bin/bash開頭;表示該文件使用的是bash語法;
如果不設置該行,你的shell腳本也可以執行,但是不符合規範。#表示註釋。
# vim first.sh
輸入以下內容
#! /bin/bash
date
echo "Hello world!"
退出文件編輯
# sh first.sh 執行腳本
# ./first.sh 提示許可權不夠
# chmod +x first.sh
# ./first.sh 執行腳本
# sh -x first.sh 查看shell的執行過程,方便調試
date用法
date +%Y:以四位數字格式列印年分
date +%y:二位數展示年分
date +%m :月份
date +%d:日期
date +%H:小時
date +%M:分鐘
date +%S:秒
date +%w:星期;0表示周日。
# date +"%Y-%m-%d %H:%M:%S"
# date -d "-1 day" +%d 一天前的日期
# date -d "-1 hour" +%H 一個小時前
# date -d "-1 min" +%M 一分鐘前
變數
1)變數名=變數值
2)腳本中的反引號(鍵盤左上角 波浪線鍵)是將字元串當成shell命令執行,返回命令的執行結果。
d=`date +%H:%M:%S` 變數
echo "腳本開始時間 $d."
echo "現在休眠2秒"
sleep 2
d1=`date +%H:%M:%S` 變數
echo "腳本結束:$d1."
數學運算
a=1
b=2
sum=$[$a+$b]
echo "$a+$b=$sum"
和用戶交互
read -p "請輸入一個數字:" x
read -p "請再次輸一個數字:" y
sum=$[$x+$y]
echo "這個和是:$sum"
腳本預設變數
文件a.sh,內容如下
sum=$[$1+$2]
echo "sum=$sum"
執行腳本 sh a.sh 1 2
輸出結果 sum=3
$1和$2是shell腳本的預設變數。 $0表示腳本本身的名字。
邏輯語句
if
if 判斷語句; then
command
fi
編寫腳本文件 a.sh
read -p "請輸入一個數字:" a
if((a<60)); then
echo "$a 小於60"
fi
退出編輯
if else
if 判斷語句; then
command
else
command
fi
新建a.sh,內容如下
read -p "請輸入一個數字:" a
if((a<60)); then
echo “小於60”
else
echo "大於60"
fi
退出腳本編輯。
else if
if 判斷語句;then
command
elif 判斷語句;then
command
else
command
fi
新建sh文件a.sh,腳本如下
read -p "請輸入數字:" a
if((a<60));then
echo "小於60";
elif ((a<120)) && ((a>=60)); then
echo "小於120,但是大於60"
else
echo "大於120"
fi
判斷大小除了使用(())形式外,還可以使用[ ];但是不能使用>,<,=了;
要使用-lt(小於),-gt(大於),-le(小於等於),-ge(大於等於),-eq(等於),-ne(不等於)。
# a=10; if [$a -lt 5 ];then echo ok; fi
# a=10;if [$a -gt 5];then echo ok; fi
# a=10; if [$a -lt 1] || [$a -gt 5];then echo ok;fi
文檔的判斷
格式:
if [-參數 filename];then
command
fi
參數:
-e:判斷文件或目錄是否存在
-d:判斷是不是目錄以及是否存在。
-f:判斷是不是普通文件以及是否存在
-r:判斷是否有讀的許可權
-w:判斷是否有寫許可權
-x:判斷是否可執行
示例:
if [ -d /home/];then echo ok;fi 判斷home是否是目錄以及是否存在。
case 邏輯判斷
case 變數 in
value1)
command
;;
value2)
command
;;
*)
command
;;
esac
read -p "輸入一個數字:" n
a=$[$n%2]
case $a in
1)
echo "奇數"
;;
2)
echo "偶數"
;;
*)
echo "不是一個數字"
;;
esac
for迴圈:seq 1 5表示從1 到5的序列。
示例1
for i in `seq 1 5`;do
echo $i
done
示例2 :迴圈字元和數字的組合
for i in 1 2 3 a b;do echo $i;done
示例3:迴圈系統命令
for i in `ls`;do echo $i;done
while 迴圈
while 條件;do
command
done
示例1:
a=5
while [$a -ge 1];do
echo $a
a= $a-1
done
示例2:while死迴圈,用於監控
while :;do
sleep 3
done
函數
function sum()
{
sum1=$[$1+$2+$3]
echo $sum1
}
sum $1 $2 $3
運行腳本: sh a.sh 1 3 4 結果是8
break或continue(用法相似)
for i in `seq 1 5`
do
echo $i
if [$i==3]
then
break(或者 continue)
fi
echo $i
done
echo aaa
exit退出整個shell腳本