shell 初步

下面簡單介紹一下Shell 編程。shell 中用戶自定義函數。先舉個小例子。

#!/bin/bash

work() {
    ans=`expr $1 + $2`
    return $ans
}

genStr() {
    ans="hello bash"
    return $ans
}
work 3 4
echo $?
genStr
echo $?

i=1
((b=$i+1)) # 這裏的 b=2 這樣可以給i加1
echo $i 
for i in `ls`
do
if [ $i = 'hello.sh' ]
then
   echo 'yes, exists'
fi
done
if [ -d "mysql" ] #判斷當前目錄下是否存在mysql 目錄。
then
    echo "mysql dir exists"
fi
if [ ! -d "mysql" ] #如果當前目錄下沒有 mysql 目錄,創建並給出提示。
then
    mkdir "mysql"
    echo "mysql dir has been created!"
fi

對上面這段代碼,做如下說明。
1. shell 中的變量的定義和引用。定義的時候前面不用$,但是引用的時候在變量前要加上$。Shell中變量的賦值,=的左右是沒有空格的,所以寫shell的時候,空格不能隨便加。
2. shell 中的函數,參數 => $0,$1,$2 就和命令行參數一樣,在調用函數的時候,內部函數的返回值用$?來表示。調用函數的時候不需要加括號。只需要函數名,和參數。
3. 最後一個是shell中算數運算的例子,要用兩隊括號,當然,算數運算還可以實用expr 工具,見第一個函數內。
4. shell 中的 for 循環。注意do …. done 的格式。
5. shell 中的if 語句。注意 if 後面的 [] ,是後面至少要有一個空格,並且 [] 內的表達式應應該是有一個空格的, $i = ‘hello.sh’ 。接上面提到的 = 的用法,現在可以稍微總結一 下,= 兩邊沒有空格表示 賦值運算, 兩邊又空格表示邏輯運算的相等。
6. 注意shell中的 if … then … fi 的格式。
7. shell 中是可以沒有; 這個符號的,python 也有這一特點,有沒有都一樣,建議不加。
8. shell 中if語句還有很多中判斷類型,比如判斷字符串是否相等,判斷是不是文件,判斷有沒有讀寫權限等等….

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