#!/bin/bash
#腳本用途:
#創(chuàng)建日期:
#Written by someone
正文......

在shell中,所有沒有聲明的變量都默認(rèn)是呈現(xiàn)字符串形式,所以var=5*7;$var就成為字符串形式"5*7",而不會(huì)進(jìn)行任何算術(shù)運(yùn)算。聲明變量使用declare指令。
delcare [-afirx] var=...
-a 定義為數(shù)組
-f 定義為函數(shù)
-i 定義為整數(shù)
-r 定義為只讀 
-x 定義為通過環(huán)境輸出變量

read name
read的功能是將用戶在鍵盤上輸入的內(nèi)容放到變量name中。
read name < file的形式通過重定向改變了輸入源為file。

腳本的參數(shù)代號(hào):
$0 腳本的文件名
$1 第一個(gè)附加參數(shù)
$2 第二個(gè)附加參數(shù)
$3 ......
$# 傳遞給腳本的參數(shù)個(gè)數(shù)
$@ 傳遞給腳本的所有參數(shù)
$$ 腳本的進(jìn)程號(hào),通常用它來生成唯一的臨時(shí)文件:/tmp/tmpfile_$$

邏輯判斷式:

關(guān)于文件與目錄的邏輯判斷,格式是-×× file或者! -×× file(注意!和-xx和file之間有空格)
-f 檢測(cè)文件是否存在
-d 將測(cè)目錄是否存在
-b 檢測(cè)是否為block文件
-c 檢測(cè)是否為character文件
-L 檢測(cè)是否為符號(hào)鏈接文件
-S 檢測(cè)是否為socket標(biāo)簽文件
-e 檢測(cè)某個(gè)東西是否存在,可以是任何東西

關(guān)于程序的邏輯判斷,格式是-×× proc
-G 檢測(cè)是否由GID所執(zhí)行的程序擁有
-O 檢測(cè)是否由UID所執(zhí)行的程序擁有

關(guān)于文件的屬性檢測(cè),格式是-×× file
-r 檢測(cè)是否為可讀屬性
-w 檢測(cè)是否為可寫屬性
-x 檢測(cè)是否為可執(zhí)行屬性
-s 檢測(cè)是否為非空白文件
-u 檢測(cè)是否具有SUID屬性
-g 檢測(cè)是否具有SGID屬性
-k 檢測(cè)是否具有sticky bit屬性

兩個(gè)文件的判斷與比較,格式是file1 -×× file2
-nt 第一個(gè)文件比第二個(gè)文件新
-ot 第一個(gè)文件比第二個(gè)文件舊
-ef 第一個(gè)文件和第二個(gè)文件為同一個(gè)文件(諸如鏈接文件)

邏輯與、邏輯或
&& 邏輯與
|| 邏輯或

運(yùn)算符:
-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-le 小于或等于
-ge 大于或等于
-a 雙方都成立(and)
-o 單方成立(or)

字符串比較:
= 兩個(gè)字符串相同
!= 兩個(gè)字符串不同
-z 空字符串
-n 非空字符串

條件判斷:
if [條件判斷1] &&/|| [條件判斷2]; then
  ……
elif [條件判斷1] &&/|| [條件判斷4]; then
  ……
else
  ……
fi
注意:在[]中,只能有一個(gè)判斷式;在[]與[]之間,可以使用&&或者||結(jié)合判斷式;[]中每一個(gè)獨(dú)立的組件之間需要用空格鍵隔開,這一點(diǎn)尤其要注意,其中組件是指[、]、變量、運(yùn)算符號(hào)和字符串、值等。例如:
if [ "$var" = "yes" ]; then

case var in
方式一 | 方式×)
  程序段
  ;;
方式二 | 方式×)
  程序段
  ;;
*)
  echo "Usage {方式一|方式二}" 
  exit 1
esac
 
循環(huán):
for((條件1;條件2;條件3))
do
 程序段
done

for var in var_list     //var_list是以空格鍵分開的選擇項(xiàng),多為字符串,例如for var in yes no other或者for var in "yes" "no" "other"
do
 程序段
done
看下面一段腳本程序,該程序演示了$(command)的用法,for命令的參數(shù)來自$()中的命令的結(jié)果:
for file in $(ls *.sh)
do
 lpr $file
done

while [條件]
do
 程序段
done

until [條件]
do 
 程序段
done

調(diào)試腳本:
sh [-nvx] scripts
-n 不執(zhí)行腳本,查詢腳本內(nèi)的語法,若有錯(cuò)誤則列出
-v 在執(zhí)行腳本之前,先將腳本的內(nèi)容顯示在屏幕上
-x 將用到的腳本內(nèi)容顯示在屏幕上,與-v稍微不同

注意:
1.在條件判斷時(shí)一般使用"$var"的形式,這是為了防止出現(xiàn)var為空的情況,例如:if [ $var = "yes" ]中,如果var為空,那么會(huì)出現(xiàn)if [ = "yes" ]的情況,這是不合法的,而if [ "$var" = "yes"]則不會(huì)出現(xiàn)該問題。