Shell Script for Linux
在Linux中,許多工作都可以用Script的方式來自動化,減少要一字一字輸入指令的麻煩,不過Script的語法與C語言有點不太一樣,因此需要習慣一下,在此就介紹幾個常用又基本的語法。在此我是用Bash shell來寫。記得在一開始的第一行一定要宣告#!/bin/bash,在最後有提供下面幾個範例的檔案下載,有興趣的人可以下載來玩玩。本人的測試環境為Fedora 14 (Bash Shell)。
顯示的語法為echo "文字",另外也可以用printf "文字 \n",差別在於printf 可以配合修改文字顏色。如果在一開始執行Script時,後面跟著引數,那在寫Script時,可以用$1 $2 $3來讀取引數的值。
顯示文字 (S1_show) |
#!/bin/bash #===$1 $2 $3==== echo $1 $2 $3 |
結果: |
在Script中是用if開頭,fi結尾。格式也非常的要求,每一個字之間都要用空格,整個語法的形式為 if [ "變數" == "變數" ];then,另外在使用or時,如果只有二組可以用-o,三組以上就必須用 || 來連結,and二組時也可以用-a,三組以上也必須用&&來連結。
IF (S2_if) |
#!/bin/bash #===if==== number="1" #if equal if [ "$number" == "1" ];then echo "1" else echo "2" fi #if not equal if [ ! "$number" == "1" ];then echo "1" else echo "2" fi #[if equal or if equal] if [ "$number" == "1" -o "$number" == "2" ];then echo "1" else echo "2" fi #[if equal] or [if equal] or [if equal]... if [ "$number" == "1" ] || [ "$number" == "2" ] || [ "$number" == "3" ];then echo "1" else echo "2" fi #[if equal and if equal] if [ "$number" == "1" -a "$number" == "2" ];then echo "1" else echo "2" fi #[if equal] and [if equal] and [if equal]... if [ "$number" == "1" ] && [ "$number" == "2" ] && [ "$number" == "3" ];then echo "1" else echo "2" fi |
結果: |
for迴圈寫法比較類似C語言,另外也有while等無限迴圈的語法可以使用。
For (S3_for) |
#!/bin/bash #===for==== for (( i=0; i<=3; i=i+1 )) do echo $i done |
結果: |
在宣告常數時,只要在常數後方加上=('內容' '內容' '內容' '內容' ...)就可以宣告成陣列的型式。在Script中,要進行運算必須把數字用$((陣列[x]))包起來。 要拿來判斷或顯示則用${陣列[x]}
陣列及計算 (S4_array_arithmetic) |
#!/bin/bash #===array and arithmetic==== number=('1' '2' '3') echo "number[0]="${number[0]} echo "number[1]="${number[1]} echo "number[2]="${number[2]} echo "number[0]+number[1]="$((number[0]+number[1])) echo "number[0]+number[2]="$((number[0]+number[2])) |
結果: |
Function是讓你的程式能有效管理的一個語法,只要記得在要使用的地方之前宣告就可以使用了。
Function (S5_function) |
#!/bin/bash #===function==== function hello (){ echo "Here is the function." } #call function echo "Call the function:" hello |
結果: |
想要將結果存到某個檔案可以利用echo 文字 >> 檔案 或 echo 文字 > 檔案 的方式存檔,>>是連續存檔,>是每次都更新檔案內容 。在這段Script中,if 中使用-e的意思為判斷檔案是否存在。
綜合 (S6_combo) |
#!/bin/bash #===combo==== function filecheck (){ if [ -e "S1_show" ];then echo "S1_show is exist." file_number="10" elif [ -e "S2_show" ];then echo "S2_show is exist." file_number="20" elif [ -e "S3_show" ];then echo "S3_show is exist." file_number="30" fi } #start filecheck for (( i=0; i<=4; i=i+1 )) do show_number=$(($file_number+$i)) echo $show_number echo $show_number >> 1.txt echo $show_number > 2.txt done |
結果:
|
最後只要搭配一些Linux的基本指令,如cp、rm、touch...等,就能夠讓你想做的工作自動化,減少許多不必要的時間喔。
網路資料:鳥哥的Linux私房菜
Shell Script檔下載點:連結已失效
留言列表