Shell程式設計基礎 1

2021-06-16 16:42:35 字數 2237 閱讀 3568

shell指令碼程式設計學習入門是本文要介紹的內容,我們可以使用任意一種文字編輯器,比如gedit、kedit、emacs、vi等來編寫shell指令碼,它必須以如下行開始(必須放在檔案的第一行):

#!/bin/sh

...

注意:最好使用「!/bin/bash」而不是「!/bin/sh」,如果使用tc shell改為tcsh,其他類似。

符號#!用來告訴系統執行該sell指令碼的程式,本例使用/bin/sh。編輯結束並儲存後,如果要執行該shell指令碼,必須先使其可執行:

chmod +x filename
此後在該shell指令碼所在目錄下,輸入 ./filename 即可執行該shell指令碼。

shell裡的一些特殊符號 a

shell離得函式

如果你寫過比較複雜的shell指令碼,就會發現可能在幾個地方使用了相同的**,這時如果用上函式,會方便很多。函式的大致樣子如下:

functionname()

你需要在每個指令碼的開始對函式進行宣告。

下面是乙個名為xtitlebar的shell指令碼,它可以改變終端視窗的名稱。這裡使用了乙個名為help的函式,該函式在shell指令碼中使用了兩次:

#!/bin/sh

# vim: set sw=4 ts=4 et:

help()

# in case of error or if -h is given we call the function help:

[ -z "$1" ] && help

[ "$1" = "-h" ] && help

# send the escape sequence to change the xterm titelbar:

echo -e "33]0;$107"

#

命令列引數

我們已經見過$* 和 $1, $2 ... $9 等特殊變數,這些特殊變數包含了使用者從命令列輸入的引數。迄今為止,我們僅僅了解了一些簡單的命令列語法(比如一些強制性的引數和檢視幫助的-h選項)。但是在編寫更複雜的程式時,您可能會發現您需要更多的自定義的選項。通常的慣例是在所有可選的引數之前加乙個減號,後面再加上引數值 (比如檔名)。

有好多方法可以實現對輸入引數的分析,但是下面的使用case表示式的例子無疑是乙個不錯的方法。

#!/bin/sh

help()

while [ -n "$1" ]; do

case $1 in

-h) help;shift 1;; # function help is called

-f) opt_f=1;shift 1;; # variable opt_f is set

-l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2

--) shift;break;; # end of options

-*) echo "error: no such option $1. -h for help";exit 1;;

*) break;;

esac

done

echo "opt_f is $opt_f"

echo "opt_l is $opt_l"

echo "first arg is $1"

echo "2nd arg is $2"

你可以這樣執行該指令碼:

cmdparser -l hello -f -- -somefile1 somefile2
返回結果如下:

opt_f is 1

opt_l is hello

first arg is -somefile1

2nd arg is somefile2

這個shell指令碼是如何工作的呢?指令碼首先在所有輸入命令列引數中進行迴圈,將輸入引數與case表示式進行比較,如果匹配則設定乙個變數並且移除該引數。根據unix系統的慣例,首先輸入的應該是包含減號的引數。

shell指令碼示例

一般程式設計步驟

現在我們來討論編寫乙個指令碼的一般步驟。任何優秀的指令碼都應該具有幫助和輸入引數。寫乙個框架指令碼(framework.sh),該shell指令碼包含了大多數指令碼需要的框架結構,是乙個非常不錯的主意。這樣一來,當我們開始編寫新指令碼時,可以先執行如下命令:

cp framework.sh myscript
然後再插入自己的函式。

讓我們來看看如下兩個示例。

Shell程式設計基礎(1)

自己的學習筆記,就當做乙個備份吧 1.檢視linux支援哪些shell 2.type 命令 檢視乙個命令是否是內建命令 type cd 3.本地變數的定義 變數名 值 中間不要有空格 xx 19 定義變數 echo xx unset xx 取消變數 本地變數只影響當前shell echo 顯示當前程...

shell程式設計 1 基礎

bash的內部命令 shell在啟動時就調入記憶體。bash的外部命令 使用時才從硬碟中讀入記憶體。命令萬用字元 匹配任意乙個字元 匹配括號中的任意單字元 匹配任何的字元或者字串,包括空字串 shell程式本質是普通文字檔案,加上可執行許可權後可以讓shell執行文字中的程式。shell compi...

shell程式設計1

1 雙引號 雙引號內的內容除了 轉義符 倒引號 這三個保留特殊功能,其他的均作為普通字元。2 單引號 單引號裡的內容全部作為普通字元。3 倒引號 引號內的內容當做 shell 命令列來解釋。4 美元符 變數符,如 a表示變數 a的值。變數字元長度超過 1個時,用 括起來。5 變數 本地變數 只能在建...