linux shell 腳本詳解

. Linux  shell 腳本編寫基礎
◆1.1 語法基本介紹
1.1.1 開頭

程序必須以下面的行開始(必須方在文件的第一行):
#!/bin/sh
符號#!用來告訴系統它后面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。
當編輯好腳本時,如果要執行該腳本,還必須使其可執行。
要使腳本可執行:
編譯 chmod +x filename 這樣才能用./filename 來運行
1.1.2 注釋
在進行shell編程時,以#開頭的句子表示注釋,直到這一行的結束。我們真誠地建議您在程序中使用注釋。
如果您使用了注釋,那么即使相當長的時間內沒有使用該腳本,您也能在很短的時間內明白該腳本的作用及工作原理。
1.1.3 變量

在其他編程語言中您必須使用變量。在shell編程中,所有的變量都由字符串組成,并且您不需要對變量進行聲明。要賦值給一個變量,您可以這樣寫:

復制代碼代碼如下:


#!/bin/sh 
#對變量賦值: 
a=”hello world” 
# 現在打印變量a的內容: 
echo “A is:” 
echo $a


有時候變量名很容易與其他文字混淆,比如:

復制代碼代碼如下:


num=2 
echo “this is the $numnd”

這并不會打印出“this is the 2nd”,而僅僅打印”this is the “,因為shell會去搜索變量numnd的值,但是這個變量時沒有值的??梢允褂没ɡㄌ杹砀嬖Vshell我們要打印的是num變量:

復制代碼代碼如下:


num=2 
echo “this is the ${num}nd”


這將打印: this is the 2nd
1.1.4 環境變量
export關鍵字處理過的變量叫做環境變量。我們不對環境變量進行討論,因為通常情況下僅僅在登錄腳本中使用環境變量。

這一講就介紹到這里,下面我們會接觸到具體的Linux shell腳本基礎的實質部分。

 

 

必須要要知道幾個變量,

復制代碼代碼如下:


   *    $0 :即命令本身,相當于c/c++中的argv[0]
    *    $1 :第一個參數.
    *    $2, $3, $4 … :第2、3、4個參數,依次類推。
    *    $#  參數的個數,不包括命令本身
    *    $@ :參數本身的列表,也不包括命令本身
    *    $* :和$@相同,但”$*” 和 “$@”(加引號)并不同,”$*”將所有的參數解釋成一個字符串,而”$@”是一個參數數組。


手工處理方式能滿足多數的簡單需求,配合shift使用也能構造出強大的功能,但處理復雜選項時建議用下面的兩種方法。
例子,(getargs.sh):

復制代碼代碼如下:


#!/bin/bash
if [ $# -lt 1 ]; then
    echo “error.. need args”
    exit 1
fi
echo “commond is $0”
echo “args are:”
for arg in “$@”
do
    echo $arg
done


運行命令:

復制代碼代碼如下:


./getargs.sh 11 22 cc
commond is ./getargs.sh
args are:
11
22
cc

 

 ”>, >>, 2>, 2>> :前面講過重定向符號> 以及>> 分別表示取代和追加的意思,然后還有兩個符號就是這里的2> 和 2>> 分別表示錯誤重定向和錯誤追加重定向,當我們運行一個命令報錯時,報錯信息會輸出到當前的屏幕,如果想重定向到一個文本里,則要用2>或者2>>。

 linux shell 腳本詳解

[ ] ”:中括號,中間為字符組合,代表中間字符中的任意一個

 linux shell 腳本詳解

&& 與 ||

在上面剛剛提到了分號,用于多條命令間的分隔符。另外還有兩個可以用于多條命令中間的特殊符號,那就是 “&&”和”||”。下面筆者把這幾種情況全列出:

1) command1 ; command2

2) command1 && command2

3) command1 || command2

使用”;”時,不管command1是否執行成功都會執行command2; 使用”&&”時,只有command1執行成功后,command2才會執行,否則command2不執行;使用”||”時,command1執行成功后command2 不執行,否則去執行command2,總之command1和command2總有一條命令會執行。

linux shell 腳本詳解 

 

 

 

 

原創文章,作者:linux-qiao,如若轉載,請注明出處:http://www.www58058.com/83818

(0)
linux-qiaolinux-qiao
上一篇 2017-08-05 15:11
下一篇 2017-08-05 15:43

相關推薦

  • 編譯Bind和壓力測試

    編譯安裝bind ·下載bind:     isc.org:          bind-9.8          bind-9.9   &…

    Linux干貨 2016-09-25
  • N25第六周作業

    vim 是vi編輯的升級版,同樣有三種工作模式:編輯、命令和一般 模式 #:指定行號位置 #,#:指定多少行到多少行 #,+#:指定范圍,多少行開始,加#行 $:最后一行 .:當前行 .,$-1,當前行到倒數第二行 1,$:全文 %:全文 /從上往下,?:從下往上 搜索 /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行 s/要查找的內容…

    Linux干貨 2017-01-11
  • 分布式文件系統Mogilefs介紹與安裝

    一、分布式文件系統簡介: 什么是分布式存儲:       分布式存儲系統,是將數據分散存儲在多臺獨立的設備上。傳統的網絡存儲系統采用集中的存儲服務器存放所有數據,存儲服務器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要。分布式網絡存儲系統采用可擴展的系統結構,利用多臺存儲…

    Linux干貨 2016-05-04
  • DNS服務

    名字解析,DNS服務,實現主從服務器,實現子域

    2018-01-22
  • TCP詳解

    TCP協議詳解   TCP/IP協議不是TCP和IP這兩個協議的合稱,而是指因特網整個使用TCP/IP協議的協議集合。他取代了OSI七層模型,成為事實上的應用于實際的模型。 TCP/IP協議與OSI協議的關系如下:   各層的作用如下: TCP特性: 工作在傳輸層面向連接協議 全雙工協議 半關閉 錯誤檢查 將數據打包成段,排序 確認機制 …

    2017-09-02
  • 磁盤管理(1)

    1、磁盤結構(機械硬盤) (1)磁盤構成: 磁臂(機械手臂):連接并固定磁頭 馬達(電機):可以轉動盤片,讓磁臂上的磁頭可以在盤片上讀寫數據 扇區:最小的物理存儲單位,每個扇區為512bytes 磁頭:可以讀寫數據 盤片:主要記錄數據 柱面:將扇區組成一個圓就是柱面,柱面是分區的最小單位 (2)磁盤接口 并口:IDE  SCSI&nbsp…

    Linux干貨 2016-08-30
欧美性久久久久