最近又重新撿起了以前放在一邊的linux指令碼了,呵呵,最開始學習linux指令碼編寫是在搭建linux下的qmail郵件伺服器的時候。那時候由於qmail要安裝很多軟體包,所以就把命令整理成乙個指令碼來一次批處理執行,那時也學到了linux下的shell程式設計。
指令碼其實多半就是終端命令的乙個集合,批處理。所以只要熟悉linux下的終端命令基本上就可以寫出shell指令碼了,當然了,指令碼肯定還是會有不同的地方的,比如if-else語句、switch等流程語句的使用,引數的獲取等等。不過在編寫linux指令碼的時候要注意在windows平台編寫後拿到linux下執行會有很多問題,比如換行回車,另外還有一些字元的問題。總之就是比較麻煩,我的做法就是直接在linux下編輯指令碼,如果確實要在windows下編輯的,我都會在linux下新建立乙個,然後回車n多行,下到windows後然後就是直接在每一行上輸入內容了,不在windows下換行,這樣基本上指令碼執行就不會報諸如unexpected eof等等一些錯誤了。
比如,最簡單的指令碼如下,就是列印hello world!
#列印"hello world!"的指令碼
echo "hello world!"
然後儲存該指令碼為test.sh,然後執行下面的命令就可以執行了。
#chmod 777 test.sh
#./test.sh
第一行是設定該檔案為可執行檔案,第二行就是執行該檔案了,注意在linux執行可執行檔案必須在檔案前加路徑符號,如果是當前目錄下就需要加./了。下面我在寫指令碼時候用到的一些簡單的應用。
1.在指令碼中設定環境變數的值
比如我想向環境變數classpath中加入一aaa.jar檔案,那麼我就可以這樣寫在指令碼中:
classpath=$classpath:aaa.jar
注意環境變數的名稱大小寫一定要和已有的classpath一致才可以。同時使用$classpath是引用當前的classpath的值,這和windows下的%classpath%是一樣的效果。不同於windows的是路徑之間的分隔符為冒號(:)而不是分號(;)。
2.在指令碼中獲取引數
在指令碼中使用命令列輸入引數,可以直接使用$1、$2、$3……這樣來獲取,而獲取命令引數的總數目則是使用$#來得到。
#如果引數個數小於3則輸出資訊並且退出執行
if [ "$#" -lt "3"]; then
echo "引數個數應該大於三個!"
exit 0
else
echo "您輸入的引數為:"
echo "輸入的第二個引數為:"
echo $2
for arg in $*; do
echo "$arg"
done
fiecho "指令碼呼叫成功!"
這裡,我們限制使用者必須輸入三個以上的引數,然後遍歷輸出使用者輸入的所有引數值,注意指令碼中的for迴圈,其中$*是獲取使用者輸入的所有引數,然後arg是單個變數。
linux指令碼學習
進入當前指令碼所在目錄 其他神馬方法都是浮雲 sh dir x echo 0 grep if test then sh dir dirname 0 else sh dir dirname pwd 0 ficd sh dir 指令碼暫停 bash c read n1 p press any key t...
linux指令碼學習
進入當前指令碼所在目錄 對於軟鏈結不行 curr dir cd dirname 0 pwd cd curr dir for迴圈 for i 1 i 10 i do echo i sleep 1 done 指令碼暫停 bash c read n1 p press any key to continue...
linux 指令碼 學習
一直都在聽他們說,寫個指令碼做什麼什麼事情。對於指令碼,本來就沒有什麼概念,一切從零開始吧!首先要了解 linux 下指令碼的概念,這裡有說 shell 是乙個命令直譯器 是介於作業系統 kernel 與使用者之間的乙個絕緣層 準確地說 它也是一種強力的計算機語言.乙個 shell 程式,被稱為乙個...