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檔下載點:連結已失效

arrow
arrow
    全站熱搜

    Leo 發表在 痞客邦 留言(0) 人氣()