1. 程式人生 > 其它 >shell基礎學習總結(二) (r3筆記第72天)

shell基礎學習總結(二) (r3筆記第72天)

-->關於shell程式設計之檔案比較 可以使用如下的選項來做檔案的比較。有了這些選項,檔案的比較來說都是遊刃有餘。 -d file file是否存在並是一個目錄 -e file file是否存在 -f file file是否存在並是一個檔案 -r file file是否存在並可讀 -s file file是否存在並非空 -w file file是否存在並可寫 -x file file是否存在並可執行 -O file file是否存在並屬當前使用者所有 -G file file是否存在並且預設組與當前使用者相同 File1 –nt file2 file1是否比file2新 File1 –ot file2 file1是否比file2舊

-->雙圓括號 關於雙圓括號在shell中的使用,可是相當的廣泛。以下的操作都會涉及到雙圓括號。 Val ++,++val Val –,--val ! 邏輯求反 ~ 位求反 ** 冪運算 << 左位移 >> 右位移 & 位布林和 | 位布林減 && 邏輯和 || 邏輯減 舉一個簡單的例子來說明。

val1=10;

if (( val1 ** 2 > 90 ))
then
(( val2 = $val1**3 ))
echo $val2
fi

-->shell變成中的case case語句的使用和在其它語言中的程式設計表達的是一個意思。 都是通過case 語句來把判斷條件來逐步細分,得到與之最匹配的選項。case的使用也比較廣泛,比如某一個命令可能含有很多的功能,就可以使用case來集多個功能於一身。 Case variable in Parttern1|parttern2 ) commands;; Pattern3) commands;; *)default commands;; esac

舉一個使用case的例子。如果通過$USER得到的使用者是ora10g或者oracle就輸出this is the right user,如果是Testing,就輸出this is a test user,如果是其它的使用者則輸出一段警告。

case $USER in
ora10g | oracle )
    echo 'this is the right user'
    echo 'glad to see you ';;
Testing)
    echo 'this is a test user';;
*)
    echo 'sorry, you are not the expected user';;
esac

->shell程式設計之函式 對於複雜的shell程式設計而言,肯定涉及的上下文環境會比較複雜,可能一個單獨的shell檔案就顯得有些單薄了。如果有些功能在其它的指令碼中也會涉及到,每次重複寫就太無聊了。可以使用函式的功能,直接在使用的使用引用即可。 函式的語法如下。呼叫的時候也很方便。 function fname() { Statements; } fname() { Statements } fname ; fname arg1 arg2