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 跳過當前的循環,進入下一次循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章