1.符號
-ne 表示 不等於
另外:
整數比較
-eq 等於,如:if ["$a" -eq "$b" ]
-ne 不等於,如:if ["$a" -ne "$b" ]
-gt 大於,如:if ["$a" -gt "$b" ]
-ge 大於等於,如:if ["$a" -ge "$b" ]
-lt 小於,如:if ["$a" -lt "$b" ]
-le 小於等於,如:if ["$a" -le "$b" ]
< 小於(需要雙括號),如:(("$a" < "$b"))
<= 小於等於(需要雙括號),如:(("$a" <= "$b"))
> 大於(需要雙括號),如:(("$a" > "$b"))
>= 大於等於(需要雙括號),如:(("$a" >= "$b"))
另外:$?是shell變量,表示"最後一次執行命令"的退出狀態.0為成功,非0為失敗.
2.常用系統變量:
$0 當前shell程序的名字
$1 ~ $9 命令行上的第一到第九個參數
$# 命令行上的參數個數
$* 命令行上的所有參數
$@ 分別用雙引號引用命令行上的所有參數
$$ 當前進程的進程標識號(PID)
$? 上一條命令的退出狀態
$! 最後一個後台進程的進程標識號
系統變量只能引用不能修改!
3.判斷
if [ -f /bin/bash ]
then echo "/bin/bash is a file"
else echo "/bin/bash is NOT a file"
fi
如果兩條命令寫在同一行則需要用;號隔開,一行只寫一條命令就不需要寫;號了
4.循環
for
in
do
done
例子:
for var in con1 con2 con3...
do
程序段
done
就上面的語法結構來說,這個var的變數內容在循環工作的時候:
1 第一次循環時,var的內容是con1;
2 第二次循環時,var的內容是con2;
3 第三次循環時,var的內容是con3;
5.case語句
case分支語句的格式如下:
case $變量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默認執行的命令序列 ;;
esac
6,-z -n判空操作
Shell腳本中字符串判空:使用-z 字符串長度為0時,為真,-n字符串長度不為0,為真。這兩個都不靠譜。
使用下面的方法最可靠:
if [ "x${value}" == "x" ] #為空
then
#為空處理
fi
if [ "x${value}" != "x" ] #不為空
then
#不為空處理
fi
注意 == 和 != 兩邊要有空格
7.echo 的一些命令
echo -n 不換行輸出
$echo -n "123"
$echo "456"
最終輸出
123456
而不是
123
456
echo -e 處理特殊字符
若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:
\a 發出警告聲;
\b 刪除前一個字符;
\c 最後不加上換行符號;
\f 換行但光標仍舊停留在原來的位置;
\n 換行且光標移至行首;
\r 光標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字符;
\nnn 插入nnn(八進制)所代表的ASCII字符;
$echo -e "a\bdddd"
dddd
$echo -e "a\adddd" //輸出同時會發出報警聲音
adddd