大二的時候學了shell指令碼程式設計,這在後來的linux系統的使用中給了我很大的幫助,它能讓我更加快捷的完成一些工作。這也是乙個對shell程式設計細節部分的複習系列,參考到了《linux命令列與shell指令碼程式設計大全 第3版》,當年我用到的還是第2版,時間過得真快呀。
通過這麼乙個簡單的指令碼,我們就能獲得執行多條shell命令才能獲得的效果,而且定製化程度還很高,它讓我們能快速地執行一系列操作和獲得所需的內容,這就是shell指令碼的優勢。
1,echo語句新增到shell指令碼中任何需要顯示額外資訊的地方:
2,使用-n將文字與命令輸出顯示在同一行中:
1,使用環境變數:
2,使用使用者變數:
today變數是被賦予格式化後的date命令的輸出。這是提取日期資訊來生成日誌檔名常用的一種技術。+%y%m%d格式告訴date命令將日期顯示為兩位數的年月日的組合。
可以將命令的輸出重定向到另乙個位置(比如檔案)。重定向可以用於輸入,也可以用於輸出,可以將檔案重定向到命令輸入。1,輸出重定向:command > outputfile
2,輸入重定向:command < inputfile
將乙個命令的輸出作為另乙個命令的輸入的過程,叫管道連線(piping):command1 | command2。
可以在一條命令中使用任意多條管道。可以持續地將命令的輸出通過管道傳給其他命令來細化操作:
也可以搭配使用重定向和管道來將輸出儲存到檔案中。
執行數**算的能力對任何程式語言都很重要的,但在shell中就必見不方便,需要兩種命令的輔助。
1,expr命令:
arg1 | arg2 如果arg1既不是null也不是零值,返回arg1;否則返回arg2
arg1 & arg2 如果沒有引數是null或零值,返回arg1;否則返回0
arg1 < arg2 如果arg1小於arg2,返回1;否則返回0
arg1 <= arg2 如果arg1小於或等於arg2,返回1;否則返回0
arg1 = arg2 如果arg1等於arg2,返回1;否則返回0
arg1 != arg2 如果arg1不等於arg2,返回1;否則返回0
arg1 >= arg2 如果arg1大於或等於arg2,返回1;否則返回0
arg1 > arg2 如果arg1大於arg2,返回1;否則返回0
arg1 + arg2 返回arg1和arg2的算術運算和
arg1 - arg2 返回arg1和arg2的算術運算差
arg1 * arg2 返回arg1和arg2的算術乘積
arg1 / arg2 返回arg1被arg2除的算術商
arg1 % arg2 返回arg1被arg2除的算術餘數
string : regexp 如果regexp匹配到了string中的某個模式,返回該模式匹配
match string regexp 如果regexp匹配到了string中的某個模式,返回該模式匹配
substr string pos length 返回起始位置為pos(從1開始計數)、長度為length個字元的子字串
index string chars 返回在string中找到chars字串的位置;否則,返回0
length string 返回字串string的數值長度
但還是有個大問題:bash shell數**算符只支援整數運算。若要進行任何實際的數學計算,這是乙個巨大的限制。
3,浮點運算
最常見的方案是用內建的bash計算器,叫作bc:variable=$(echo 「options; expression」 | bc)
在乙個命令列中列出多個表示式進行大量運算,就會有點麻煩,但可以:
6,完美地退出指令碼
shell中執行的每個命令都使用退出狀態碼( exit status)告訴shell它已經執行完畢。
對shell指令碼而言,執行完最後一條命令時,指令碼就結束了。同樣地,在命令結束執行時乙個狀態碼由命令傳給shell,可以捕獲這個值並在指令碼中使用,讓指令碼的退出更加優雅。
$?變數能讓我們檢視退出狀態碼:
shell指令碼程式設計基礎 一 構建基本指令碼
檔案第一行必須指定使用的shell bin bash 為 注釋 shell 會通過path環境變數來查詢命令 引用當前目錄下的檔案 操作符 test1 執行當前目錄下的test1 指令碼 echo 輸出字串 引用變數 前面加 符 shell 可以從命令輸出中提取 資訊 賦給變數 1.反引號 2.格式...
shell指令碼自動構建docker
shell 指令碼需要配合dockerfile檔案來構建 源jar路徑 即jenkins構建後存放的路徑 source path gateway docker 映象 容器名字或者jar名字 這裡都命名為這個 server name gateway tag 1.0 server port 10010 ...
shell指令碼基礎
執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...