解釋器是一種命令解釋器,主要做用是對命令進行運行和解釋,將須要執行的操做傳遞給操做系統內核並執行shell
#!/bin/bash(默認),指定解釋器bash
#!/bin/bash #這是第一個shell腳本 #by uncleyong echo ‘hello, shell'
shell的變量不須要先聲明,能夠直接使用,eg:a=15字體
調用變量的話 $a 或者 ${a},建議用後者,這樣能夠和其它字符串拼接操作系統
$?, 判斷上一條命令是否成功,0表示成功,其它表示不成功3d
$0,返回腳本的文件名稱blog
$1-$9,返回對應的參數值字符串
$*,返回全部的參數值是什麼jenkins
$#,返回參數的個數和it
#!/bin/bash #by uncleyong echo "腳本名稱:$0" echo "第一個參數是:$1" echo "第二個參數是:$2" echo "一共有多少參數:$#" echo "這些參數是:$*"
> ,會覆蓋原有的內容自動化
>> ,不會覆蓋原有的內容
; ,分號,執行多條命令,cat 1.txt; ls
| ,管道符,ps –ef | grep xxx
&& ,前面的命令執行成功,後面的才能夠執行
|| ,前面的命令執行失敗,後面的才能夠執行
「」 ,雙引號中的變量輸出變量值
‘’ ,單引號中的變量輸出自己
`` ,輸出命令結果 eg:a=`date`;echo $a
加
expr 1 + 2
echo $[1 + 2]
echo $((1 + 2))
注意: expr加號兩邊要有空格,a=1;b=2;expr $a + $b; echo $[a+b]; echo $((a+b))
減
乘
除
餘
bc計算器
保留多少位小數能夠經過scale,echo "scale=2;3/2" | bc
語法:[ 判斷表達式 ],注意,[]內部左右要有空格
-e 目標是否存在
[ -e test.sh ] || touch test.sh
-d 是否爲路徑
[ -d /root/test ] && echo "/root/test存在"
-f 是否爲文件
[ -f test.sh ] && echo "是文件"
-r 是否有讀取權限
-w 是否有寫入權限
-x 是否有執行權限
[ -x test.txt ] && echo '有執行權限'
[ `echo '1.2 < 2.1' | bc` -eq 1 ] && echo '小於'
#!/bin/bash if [ $1 -eq $2 ] then echo "$1 等於 $2" else echo "$1 不等於 $2" fi
鍵盤輸入分數,顯示成績等級
[ -z STRING ] 「STRING」 的長度爲零則爲真。
2> /dev/null;then,下面判斷報錯的時候輸出到無底洞
#!/bin/bash read -p "請輸入你的分數:" score if [ -z $score ];then echo "你尚未輸入分數" exit fi if [ $score -ge 0 ] 2> /dev/null && [ $score -lt 60 ];then echo "差" elif [ $score -lt 80 ] 2> /dev/null;then echo "中" elif [ $score -lt 90 ] 2> /dev/null;then echo "良" elif [ $score -lt 101 ] 2> /dev/null;then echo "優" else echo "分數值爲0~100之間" fi
case 變量 in 值1 ) 執行動做1 ;; 值2 ) 執行動做2 ;; .... esac
輸入性別,輸出對應的結果
#!/bin/bash echo '請輸入性別:' read sex case $sex in '男') echo '帥哥' ;; '女') echo '美女' ;; * ) echo '輸入有誤請從新輸入' ;; esac
鍵盤輸入分數,顯示成績等級
#!/bin/bash case $1 in [0-9]|[0-5][0-9]) echo "差" ;; [6-7][0-9]) echo "中" ;; [8][0-9]) echo "良" ;; [9][0-9]) echo "優" ;; 100) echo "優,太棒了,滿分" ;; *) echo "輸入不符合規則,分數值爲0~100之間" ;; esac
#!/bin/bash #打印1-10這10個數字之和 sum=0 for ((i=1;i<11;i++)) do sum=$(($sum + $i)) done echo $sum
#!/bin/bash #打印1-10這10個數字之和 sum=0 n=1 while [ $n -lt 11 ];do sum=$(( $sum + $n )) n=$(( $n + 1 )) done echo $sum
read -參數
-p:給出提示符,不支持"\n"換行
-s:隱藏輸入的內容
-t:給出等待的時間,超時會退出read
#!/bin/bash read -p "請輸入密碼:" pass echo '你輸入的密碼是:'$pass
字體色30-37:
echo -e "\033[31m 紅色字 \033[0m」
背景色40-47:
echo -e "\033[47;34m 白底藍字 \033[0m"
特效
echo -e "\033[1m 高亮度 \033[0m"
echo -e "\033[4m 下劃線 \033[0m"
echo -e "\033[5m 閃爍 \033[0m"
#!/bin/bash read -p "`echo -e "\033[31;1;4;5m 請輸入您的密碼: \033[0m"`" pass echo '你輸入的密碼是:'$pass
見jenkins中編寫的shell腳本。 詳見自動化持續集成。