Linux 腳本語言入門


0、腳本編寫初步介紹

(1)腳本第一行以 #!/bin/sh 開始,也可以用 #!/bin/bash 開始,但是第一行必須以這種方式開始.

(2)腳本名需要以.sh結尾

(3)#開頭的句子表示注釋

(4)若要執行腳本文件,需給腳本賦權限,chmod 755 filenme

(5)腳本執行./filename

1、基本語法

(1)變量:

  • 變量的類型:

運行shell時,會同時存在三種變量:
1) 局部變量
局部變量在腳本或命令中定義,僅在當前shell實例中有效,其他shell啟動的程序不能訪問局部變量。
2) 環境變量
所有的程序,包括shell啟動的程序,都能訪問環境變量,有些程序需要環境變量來保證其正常運行。必要的時候shell腳本也可以定義環境變量。
3) shell變量
shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行

  • 特殊變量:

定義變量:
m=100
使用變量:
echo $m
echo ${m}

注:

1,變量名和等號之間不能有空格;

2,首個字符必須為字母(a-z,A-Z)。

3, 中間不能有空格,可以使用下划線(_)。

4, 不能使用標點符號。

5, 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。

6,對於變量的{} 是可以選擇的, 它的目的為幫助解釋器識別變量的邊界.

7,$* 和 $@ 的區別為: $* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。

8,$? 可以獲取上一個命令的退出狀態。所謂退出狀態,就是上一個命令執行后的返回結果。退出狀態是一個數字,一般情況下,大部分命令執行成功會返回 0,失敗返回 1。

(2)shell中的字符串:

  • 單引號:
  1. 單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  2. 單引號字串中不能出現單引號(對單引號使用轉義符后也不行)。
  • 雙引號:
  1. 雙引號里可以有變量
  2. 雙引號里可以出現轉義字符

(3)shell中的替換:

  • 轉義符:

在echo中可以用於的轉義符有:

  • 變量替換:

可以根據變量的狀態(是否為空、是否定義等)來改變它的值.

 

(4)shell中的運算符:

  •  算術運算符:

原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,例如 awk 和 expr. 下面使用expr進行;  expr是一款表達式計算工具,使用它可以完成表達式的求值操作;

 

  • 關系運算符:

只支持數字,不支持字符串,除非字符串的值是數字。常見的有:

 

  • 布爾運算符:

  • 字符串運算符:

 

  • 文件測試運算符:

 檢測 Unix 文件的各種屬性。

(5)shell中的數組:

bash支持一維數組, 不支持多維數組, 它的下標從0開始編號. 用下標[n] 獲取數組元素;

  • 定義數組:

在shell中用括號表示數組,元素用空格分開。 如:

array_name=(value0 value1 value2 value3)

也可以單獨定義數組的各個分量,可以不使用連續的下標,而且下標的范圍沒有限制。如:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
  • 讀取數組:

讀取某個下標的元素一般格式為:

${array_name[index]}

讀取數組的全部元素,用@或*

${array_name[*]}
${array_name[@]}
  • 獲取數組的信息:

取得數組元素的個數:

length=${#array_name[@]}
#或
length=${#array_name[*]}

獲取數組的下標:

length=${!array_name[@]}
#或
length=${!array_name[*]}

取得數組單個元素的長度:

lengthn=${#array_name[n]}

 

2、簡單控制語句:

(1)if 語句:

包括:
1if

if  [ 表達式 ] 
then  
  語句  
fi

2.  if else

if  [ 表達式 ] 
then 
  語句 
else 
  語句 
fi

3.  if else if

if  [ 表達式] 
then 
  語句  
elif  [ 表達式 ] 
then 
  語句 
elif  [ 表達式 ] 
then 
  語句
fi

例:

包括:
1if

a=5
if [ $a -lt 10 ]
then
 echo $a
fi


2.  if else

m=5
if [$m -lt 3 ]
then
  echo $m+1
else
  echo $m
fi

3.  if else if

if [ $1 -lt 3 ]
then
  val=`expr $1 + 1`
  echo $val
elif [ $1 -gt 6 ]
then
  val=`expr $1 - 1`
  echo $val
else
  echo $1
fi

注:expr前后為反引號··,運算符+、-前后需要空格

(2)for循環:

格式:

for 變量 in 列表
do
    command1
    command2
    ...
    commandN
done

注:列表是一組值(數字、字符串等)組成的序列,每個值通過空格分隔。每循環一次,就將列表中的下一個值賦給變量。

例:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

 

(3)while循環:

格式:

while command
do
   Statement(s) to be executed if command is true
done

例:

int=1
m=8
while(( $int<=5 ))
do
 m=9
 echo $int
 echo $m
 let "int++"
done

 

 

轉自博客園1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM