測試開發基本技能(-)shell

總覽

變量

邏輯控制

shell環境

腳本應用

變量

a=1

b="hello,你好"

=左右不要有空格

如果內容有空格,需要使用單引號或者雙引號

雙引號支持轉義

變量使用

echo$a

echo${b}

預定義變量

echo$PWD

echo$USER

echo$HOME

echo$~

echo$PATH

變量類型

字符串a="xx"

數字i=1314

布爾true,false

數組arr=(a b c)

函數foo(){echo hello world}

數字型變量操作·


計算i=1;echo$i;echo$((i+1))

更新((i=i+1));echo$i

浮點型計算awk'BEGIN{print1/3}'

字符串操作

a=“hello world”

${value:offset}

echo${a:4}輸出oworld

${value:offset:length}

echo${a:4:6}輸出oworl

${#array[*]}和${#array[@]}表示數組中元素個數

${value#patters}${value##pattern}#表示掐頭echo${a#*l}echo${a##*l}

${value%patters}${value%%pattern}%表示去尾echo${a%o*}echo${a%%o*}

${value/pattern/string}${value//pattern/string}表示替換字符串echo${a/w/f}

布爾變量

true

false

命令執行返回值 $?

任何命令執行都會有一個返回值

0表示正確

非0表示錯誤

算數判斷

[ 2 –eq 2 ] 相等

[ 2 –ne 2 ] 不等

[ 3 –gt 1 ] 大於

[ 3 –ge 3 ] 大於等於

[ 3 –lt 4 ] 小於

3 –le 3 ] 小於等於

(())也可以表示算術比較。((10>=8)) ,((10==10)),

字符串比較

[ string1 = string2 ] 如果兩字符串相同,則結果為真

[ string1 != string2 ] 如果兩字符串不相同,則結果為真

[ -n "$var" ] 如果字符串不是空,則結果為真

[ -z "$var" ] 如果字符串是空,則結果為真

[[ "xxxx" == x* ]] 在表達式中表示0或者多個字符

[[ xxx == x?? ]] 在表達式中表示單個字符

邏輯判斷

[ 2 -ge 1 -a 3 -ge 4 ];echo $? 與

[ 2 -ge 1 -o 3 -ge 4 ];echo $? 或

[[ 2 -ge 1 && 3 -ge 4 ]];echo $? 與

[[ 2 -ge 1 || 3 -ge 4 ]];echo $? 或

[ ! 2 -ge 1 ];echo $?非

內置判斷

-e file 如果文件存在,則結果為真

-d file 如果文件是一個子目錄,則結果為真

-f file 如果文件是一個普通文件,則結果為真

-r file 如果文件可讀,則結果為真

-s file 如果文件的長度不為0,則結果為真

-w file 如果文件可寫,則結果為真

-x file 如果文件可執行,則結果為真

數組變量

array=(1 3 4 6)

array=(`ls`)

array[2]="hello world"

echo ${array[2]};

echo ${array[*]}

echo ${#array[*]}

if結構

if [ condition ] ; then …;fi

if [ condition ] ; then …;else …;fi

if [ condition ] ; then …;elif …;fi

簡單的邏輯可以使用 && || 去替代

[ -f file ] && echo file exist || echo file not exist

for 循環

for(( c1 ; c2 ; c3 ));

do

… ;

done

for((i=0;i<10;i++));do echo $i;done

for變歷循環

for f in $array[*];

do

…..

done

ss="aa bb cc dd";for x in $ss;do echo $x ;done

for x in `ls` ;do echo $x ;done

ss=(aa bb cc "sss dd");for x in "${ss[@]}";do echo $x ;done

while循環

while設置條件

i=0;

while ((i<3)) ;do

echo $i; ((i=i+1));

done

一行行的讀取文件內容

while read line; do echo $line ; done < /tmp/tmp

退出控制

return 函數返回

exit 腳本進程退出

break 退出當前循環

continue 跳過當前的循環,進入下一次循環。


分享到:


相關文章: