1. 程式人生 > 其它 >shell指令碼常用方法總結

shell指令碼常用方法總結

shell指令碼給字串新增顏色

字顏色:
  echo
-e "\033[30m 黑色字 \033[0m"   echo -e "\033[31m 紅色字 \033[0m"   echo -e "\033[32m 綠色字 \033[0m"   echo -e "\033[33m 黃色字 \033[0m"   echo -e "\033[34m 藍色字 \033[0m"   echo -e "\033[35m 紫色字 \033[0m"   echo -e "\033[36m 天藍字 \033[0m"   echo -e "\033[37m 白色字 \033[0m" 字背景顏色:   echo -e "\033[40;37m 黑底白字 \033[0m"   echo
-e "\033[41;37m 紅底白字 \033[0m"   echo -e "\033[42;37m 綠底白字 \033[0m"   echo -e "\033[43;37m 黃底白字 \033[0m"   echo -e "\033[44;37m 藍底白字 \033[0m"   echo -e "\033[45;37m 紫底白字 \033[0m"   echo -e "\033[46;37m 天藍底白字 \033[0m"   echo -e "\033[47;30m 白底黑字 \033[0m" 字型變為紅色並且不停的閃爍:   echo -e "\033[31m \033[05m 北京歡迎你 \033[0m"

shell指令碼判斷執行使用者

#!/bin/bash
if [ `whoami` == "root" ];then
    echo "是root使用者執行"
fi 

shell指令碼中的一些特殊變數

$$        shell本身的PID
$!        shell最後執行的後臺Process的PID
$?        最後執行的命令的結束程式碼(返回值)
$#        列印傳入shell的引數個數
$0        shell本身的檔名 
$1~$n    新增到Shell的各引數值。$1是第1引數、$2是第2引數
$@$*的區別
    $@和$*都有列印傳入shell的所有變數的意思;
舉個例子說明吧
[root@jump ~]# cat aaa.sh
#!/bin/bash
fun() {
    echo "$#"
}

echo '"$@" 的引數為' $@
echo '"$*" 的引數為' $*
echo '"$@" 的引數個數 '$(fun "$@") "個"
echo '"$*" 的引數個數' $(fun "$*") "個"
執行結果:
[root@jump ~]# bash aaa.sh 1 2 3
"$@" 的引數為 1 2 3
"$*" 的引數為 1 2 3
"$@" 的引數個數 3 個
"$*" 的引數個數 1 個
結論:
  當aaa指令碼執行後,$@的引數為"1" "2" "3";$*的引數為"1 2 3";所以$@的引數數量為3個;$*的引數數量為1個;

shell指令碼中的比較

-eq    等於        
-ne    不等於
-gt    大於
-lt    小於
ge     大於等於,注意沒有"-"
le     小於等於,注意沒有"-"

shell的邏輯與或非

邏輯與  "-a"
if [command1 -a command2]    兩個條件都要滿足
邏輯或  "-o"
if [command1 -o command2]    兩個條件只要滿足1個即可
邏輯非  "!"
if [! command]  條件表示式的相反結果

###第二種方式###
&&運算子
command1 && command2  command1執行結果為真,則command2才能夠被執行;只要有一個命令的執行結果為假,則後面的命令就不會被執行;實現邏輯與的功能;
||運算子
command1 || command2  command1執行結果為假,則執行command2;實現邏輯或的功能;