Linux Shell腳本編程

Shell爲弱類型語言,在使用變量時不指定類型。

Shell腳本語言不需要編譯就可以直接執行,但腳本文件默認沒有執行權限,需要chmod添加執行權限

 

chmod +x test.sh

 

如果希望這個腳本文件只能由文件所有者執行(所屬用戶組和其他用戶不可執行),那麼可以將上面的命令改爲:

 

chmod u+x test.sh

 

 

 

腳本文件開頭第一行指定bin文件夾下的bash解釋器,關於腳本第一行的探索可以看這裏:點擊打開鏈接

#!/bin/bash

echo "hello world"

 

下面列出shell腳本中一些常見的符號:

$     變量引用符

$#  表示命令行參數個數

$*   表示所有參數

$n  表示第n個參數(參數從1開始計數)

$?  表示最後一個命令執行之後的返回值

|     連接前後兩個命令,將前面的命令返回值傳給後面的命令,支持多命令連接

<    表示重定向輸入

>    表示重定向輸出

" "   表示字符串,雙引號內可以引用變量或命令,要使用元字符需要加轉義符\

` `   表示命令,單引號在鍵盤esc正下方

‘ ’    表示字符串,單引號內不可以引用變量或命令,一律視爲普通字符。在單引號內,元義字符可以直接使用,如果要去掉元義需加轉義符\

 

echo "today is `date`"                #date爲系統命令
today is Sun Mar  5 10:18:51 HKT 2017

 

shell腳本中單行註釋使用#,多行註釋可以使用 :<<字符(開頭)  ....   字符(結尾)

 

#這是單行註釋

-------------------------

:<<!

這是多行註釋
用的字符隨意
但前後要一致

!
-------------------------

 

shell腳本也有跟C語言類似的語法,例如循環與分支的控制。下面給出一些簡單示例,以便更直觀地瞭解shell腳本語言與C語言的異同。

循環控制:

 

#while循環(當變量VAR爲1時打印hello world)
while[$VAR=1]           #條件用[]括起來     
do
  echo "hello world"    #循環體用do跟done圍起來
done

 

#for循環(打印從1到10)
for i in $(seq 1 10)
do
 echo $i
done

 

 

 

分支控制:

 

 

 

#if-else
if[$VAR=1]
then                     #在if後要加then
  echo "hello"
elif
then                     #在elif後要加then
  echo "world"
else                     #else後不需要加then
  echo "!"
fi                       #用fi表示if語句結束

 

#case(類似於switch)
case $VAR in
1)echo "hello";;                     #每個case單獨分支用雙分號結束
2)echo "world";;
esac                                 #用esac表示case語句結束

 

 

 

 

 

 

 

 

 

發佈了32 篇原創文章 · 獲贊 45 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章