Linux的shell編程

 

<!-- /* Font Definitions */ @font-face {font-family:"MS 明朝"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-alt:"MS Mincho"; mso-font-charset:128; mso-generic-font-family:roman; mso-font-pitch:fixed; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋體; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Century; panose-1:2 4 6 4 5 5 5 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"MS Pゴシック"; panose-1:2 11 6 0 7 2 5 8 2 4; mso-font-charset:128; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} @font-face {font-family:"/@SimSun"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@MS 明朝"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-charset:128; mso-generic-font-family:roman; mso-font-pitch:fixed; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} @font-face {font-family:"/@MS Pゴシック"; panose-1:2 11 6 0 7 2 5 8 2 4; mso-font-charset:128; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0mm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:Century; mso-fareast-font-family:"MS 明朝"; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p {mso-margin-top-alt:auto; margin-right:0mm; mso-margin-bottom-alt:auto; margin-left:0mm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"MS Pゴシック"; mso-bidi-font-family:"MS Pゴシック";} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:99.25pt 30.0mm 30.0mm 30.0mm; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:18.0pt;} div.Section1 {page:Section1;} -->

Linux shell

http://tech.sina.com.cn/c/1338.html

Shell 本身是一個用 C 寫的程序,它是用 使用 Linux 樑。 Shell 既是一 命令 言,又是一 程序 設計語 言。作 命令 言,它交互式地解 行用 戶輸 入的命令;作 程序 設計語 言,它定 了各 種變 量和參 數,並提供了 多在高 級語 言中才具有的控制 構,包括循 和分支。它 然不是 Linux 核心的一部分,但它 調 用了系 核心的大部分功能來 行程序、建 立文件並以並行的方式 協調 各個程序的運行。因此, 於用 shell 是最重要的 用程序,深入瞭解和熟 掌握 shell 的特性極其使用方法,是用好 Linux 關鍵 。可以 shell 使用的熟 程度反映了用 戶對 Linux 使用的熟 程度。

  一、什 shell

  當一個用 Linux 之後,系 初始化程序 init 爲每 一個用 運行一個稱 shell( 外殼 ) 的程序。那 shell 是什 呢? 確切一點 shell 就是一個命令行解 器,它 提供了一個向 Linux 內核 求以便運行程序的界面系 統級 程序,用 可以用 shell 來啓 、 掛起、停止甚至是 寫一些程序。

  當用 使用 Linux 是通 命令來完成所需工作的。一個命令就是用 shell 間對話 的一個基本 位,它是由多個字符 成並以 束的 字符串。 shell 戶輸 入的命令,就象 DOS 裏的 command.com 所做的一 ,所不同的是,在 DOS 中, command.com 只有一個,而 在 Linux 下比 流行的 shell 有好幾個, shell 都各有千秋。一般的 Linux 都將 bash shell

  二、幾 流行的 shell

  目前流行的 shell ash bash ksh csh zsh 等,你可以用下面的命令來 看你自己的 shell 型:

   #echo $SHELL

   $SHELL 是一個 量,它 記錄 所使用的 shell 型。你可以用命令:

   #shell-name

  來 轉換 shell shell-name 是你想要 嘗試 使用的 shell 的名稱,如 ash 等。 個命令 又啓 了一個 shell shell 在最初登 的那個 shell 之後,稱 shell 或子 shell 。使用命令:

   $exit

  可以退出 個子 shell

  使用不同的 shell 的原因在於它 各自都有自己的特點,下面作一個 簡單 的介

   1.ash

   ash shell 是由 Kenneth Almquist 寫的, Linux 中佔用系 統資 源最少的一個小 shell ,它只包含 24 個內部命令,因而使用起來很不方便。

   2.bash

   bash Linux 使用的 shell ,它由 Brian Fox Chet Ramey 共同完成,是 Bourne Again Shell 寫,內部命令一共有 40 個。 Linux 使用它作 shell 是因 它有 如以下的特色:

   (1) 可以使用 DOS 下面的 doskey 的功能,用方向 鍵查閱 和快速 入並修改命令。

   (2) 過查 找匹配的方式 出以某字符串 開頭 的命令。

   (3) 包含了自身的幫助功能,你只要在提示符下面 help 就可以得到相 的幫助。

   3.ksh

   ksh Korn shell 寫,由 Eric Gisin 寫,共有 42 條內部命令。 shell 最大的 點是幾乎和商 業發 行版的 ksh 完全兼容, 這樣 就可以在不用花 錢購買 版本的情況下 嘗試 版本的性能了。

   4.csh

  cshLinux 大的內核,它由以William Joy 代表的共 47 位作者 成,共有52 個內部命令。 shell 是指向/bin/tcsh 這樣 的一個shell ,也就是csh 就是tcsh

  5.zch

  zchLinux 最大的shell 之一,由Paul Falstad 完成,共有84 個內部命令。如果只是一般的用途,是沒有必要安裝這樣shell 的。

3. shell 程序 設計 ( 部分 )

  其 命令 言交互式地解 行用 戶輸 入的命令只是 shell 功能的一個方面, shell 可以用來 行程序 設計 ,它提供了定 義變 量和參數 的手段以及豐富的程序控制 構。使用 shell 似於 DOS 中的批 理文件,稱 shell script ,又叫 shell 程序或 shell 命令文件。

   1.shell 基本

   shell 的基本 法主要就是如何 入命令運行程序以及如何在程序之 shell 的一些參數提供便利手段來 行通

   (1) 出重定向

  在 Linux 中, 一個 程都有三個特殊的文件描述指 (standard input ,文件描述指 針爲 0) (standard output ,文件描述指 針爲 1) 錯誤輸 (standard error ,文件描述指 針爲 2) 三個特殊的文件描述指 使 程在一般情況下接收 端的 入,同 端來 出, Linux 也向使 用者提供可以使用普通的文件或管道來取代 設備 。在 shell 中,使用者可以利用 “>” “<” 出重定向。如:

   command>file :將命令的 果重定向到一個文件。

   command>&file :將命令的 錯誤輸 出一起重定向到一個文件。

   command>>file :將 出的 果追加到文件中。

   command>>&file :將 出和 錯誤輸 出的 構都追加到文件中。

   command

   (2) 管道 pipe

   pipe 可以在 出和 錯誤輸 做代替工作, 這樣 一來,可以將某一個程序的 出送到另一個程序的 入,其 法如下:

   command1| command2[| command3...]

  也可以 錯誤輸 出一起送入管道:

   command1| &command2[|& command3...]

   (3) 前臺和後臺

  在 shell 下面,一個新 生的 程可以通 用命令後面的符號 “&” 來分 以前臺和後臺的方式來 行, 法如下:

   command

   生一個前臺的 程,下一個命令 命令運行 束後才能 入。

   command &

   生一個後臺的 程,此 程在後臺運行的同 ,可以 入其他的命令。

   2 shell 程序的 量和參數

  像高 程序 設計語 言一 shell 也提供 明和使用 量的功能。 shell ,所有 量的取 都是一個字符串, shell 程序採用 $var 的形式來引用名 var 量的

   Shell 有以下幾 基本 型的 量:

   (1)shell

   shell 就已 了一些和系 的工作 境有 量, 量用 戶還 可以重新定 ,常用的 shell 量有:

   HOME :用於保存註冊目 的完全路徑名。

   PATH :用於保存用冒號分隔的目 路徑名, shell 將按 PATH 量中 出的 序搜索 些目 ,找到的第一個與命令名稱一致的可 行文件將被 行。

   TERM 端的 型。

   UID :當前用 標識 符,取 是由數字構成的字符串。

   PWD :當前工作目 絕對 路徑名, 該變 量的取 cd 命令的使用而 化。

   PS1 :主提示符,在特 下,缺省的主提示符是 “#” ,在普通用 下,缺省的主提示符是 “$”

   PS2 :在 shell 接收用 戶輸 入命令的 程中,如果用 入行的末尾 “/” 然後回 ,或者當用 按回 車鍵時 shell 判斷出用 戶輸 入的命令沒有 助提示符,提示用 戶繼續輸 入命令的其餘部分,缺省的 助提示符是 “>”

   (2)

  用 可以按照下面的 規則 自己的 量:

   量名 =

  要注意的一點是,在定 義變 量名前不 加符號 “$” ,在引用 量的內容 時則應 量名前加 “$” ;在 給變 賦值時 ,等號兩 一定不能留空格,若 量中本身就包含了空格, 整個字符串都要用雙引號括起來。

  在 shell 程序 了使 量名和命令名相區 ,建 所有的 量名都用大寫字母來表示。

  有 想要在 明一個 量並 一個特定 後就不在改 它的 可以用下面的命令來保 一個 量的只 性:

   readly 量名

  在任何 候,建立的 量都只是當前 shell 的局部 量,所以不能被 shell 運行的其他命令或 shell 程序所利用, export 命令可以將一局部 量提供 shell 行的其他命令使用,其格式

   export 量名

  也可以在 給變 賦值 的同 使用 export 命令:

   export 量名 =

  使用 export 明的 量,在 shell 以後運行的所有命令或程序中都可以 訪問 到。

   (3) 位置參數

  位置參數是一 調 shell 程序的命令行中按照各自的位置決定的 量,是在程序名之後 入的參數。位置參數之 用空格分隔, shell 取第 一個位置參數替 程序文件中的 $1 ,第二個替 $2 ,依次 推。 $0 是一個特殊的 量,它的內容是當前 shell 程序的文件名,所以, $0 不是一個位 置參數,在 示當前所有的位置參數 是不包括 $0 的。

   (4) 義變

   義變 量和 量相 似,也是在 shell 就定 了的 量,所不同的是,用 只能根據 shell 的定 來使用 量,而不能重定 它。所有 義變 量都是由 $ 符和另一個符號 成的,常用的 shell 義變 量有:

   $# :位置參數的數量

   $* :所有位置參數的內容

   $? :命令 行後返回的狀

   $$ :當前 程的 程號

   $! :後臺運行的最後一個 程號

   $0 :當前 行的 程名

  其中, “$?” 用於 檢查 上一個命令 行是否正確 ( Linux 中,命令退出狀 態爲 0 表示 命令正確 行,任何非 0 表示命令出 )

   “$$” 量最常 的用途是用作 臨時 文件的名字以保 證臨時 文件不會重

   (5) 參數置

   shell 提供了參數置 能力以便用 可以根據不同的條件來 給變 不同的 。參數置 量有四 量通常與某一個位置參數相 系,根據指定的位置參數是否已 經設 決定 量的取 ,它 法和功能分 如下。

   a. =${ 參數 -word} :如果 置了參數, 用參數的 換變 量的 ,否 word 。即 這種變 量的 等於某一個參數的 ,如果 參數沒有 置, 則變 量就等於 word

   b. =${ 參數 =word} :如果 置了參數, 用參數的 換變 量的 ,否 置成 word 然後再用 word 參數的 。注意,位置參數不能用於 這種 方式,因 shell 程序中不能 位置參數 賦值

   c. =${ 參數? word} :如果 置了參數, 用參數的 換變 量的 ,否 word 並從 shell 中退出,如果省略了 word 則顯 準信 息。 這種變 量要求一定等於某一個參數的 ,如果 參數沒有 置,就 示一個信息,然後退出,因此 這種 方式常用於出 指示。

   d. =${ 參數 +word} :如果 置了參數, word 換變 量,否 行置

  所有 形式中的 參數 既可以是位置參數,也可以是另一個 量,只是用位置參數的情況比 多。

接下來以 bash 例向大家介 shell 程序 設計 的高 部分: shell 程的流程控制、 調試 方法及 shell 程序的運行方法, 便也向大家介 一下 bash 的內部命令。

  四、 shell 程序 設計 的流程控制

  和其他高 程序 設計語 言一 shell 提供了用來控制程序 行流程的命令,包括條件分支和循 環結 構,用 可以用 些命令建立非常 複雜 的程序。

  與 傳統 言不同的是, shell 用於指定條件 的不是布 表達式而是命令和字符串。

   1.test 測試 命令

   test 命令用於 檢查 某個條件是否成立,它可以 行數 、字符和文件三個方面的 測試 ,其 測試 符和相 的功能分 如下:

   (1) 值測試

   -eq :等於 則爲

   -ne :不等於 則爲

   -gt :大於 則爲

   -ge :大於等於 則爲

   -lt :小於 則爲

   -le :小於等於 則爲

   (2) 字符串 測試

   = :等於 則爲

   != :不相等 則爲

   -z 字符串:字符串 僞則爲

   -n 字符串:字符串 度不 僞則爲

   (3) 文件 測試

   -e 文件名:如果文件存在 則爲

   -r 文件名:如果文件存在且可 讀則爲

   -w 文件名:如果文件存在且可寫 則爲

   -x 文件名:如果文件存在且可 則爲

   -s 文件名:如果文件存在且至少有一個字符 則爲

   -d 文件名:如果文件存在且 錄則爲

   -f 文件名:如果文件存在且 普通文件 則爲

   -c 文件名:如果文件存在且 字符型特殊文件 則爲

   -b 文件名:如果文件存在且 爲塊 特殊文件 則爲

  另外, Linux 提供了與 (“ ”) 、或 (“-o) 、非 (“-a”) 三個 邏輯 操作符用於將 測試 條件 接起來,其 級爲 最高, “-a” 次之, “-o” 最低。

  同 bash 也能完成 簡單 的算 運算,格式如下:

   $[expression]

  例如:var1=2

  var2=$[var1*10+1]

   var2 值爲 21

   2.if 條件

   shell 程序中的條件分支是通 if 條件 句來 實現 的,其一般格式

   if 條件命令串

   then

  條件 的命令串

   else

  條件 的命令串

   fi

   3.for

   for 環對 一個 量的可能的 行一個命令序列。 賦給變 量的幾個數 既可以在程序內以數 列表的形式提供,也可以在程序以外以位置參數的形式提供。 for 的一般格式

   for 量名

   [in 列表 ]

   do

  若干個命令行

   done

   量名可以是用 戶選擇 的任何字符串,如果 量名是 var in 之後 出的數 序替 命令列表中的 $var 。如果省略了 in 則變 var 的取 將是位置參數。 對變 量的 一個可能的 賦值 都將 do done 的命令列表。

   4.while until

   while until 命令都是用命令的返回狀 態值 來控制循 的。 While 的一般格式

   while

  若干個命令行 1

   do

  若干個命令行 2

   done

  只要 while 若干個命令行 1” 中最後一個命令的返回狀 態爲 真, while 繼續執 do...done 若干個命令行 2”

   until 命令是另一 環結 構,它和 while 命令相似,其格式如下:

   until

  若干個命令行 1

   do

  若干個命令行 2

   done

   until while 的區 在於: while 在條件 時繼續執 行循 ,而 until 是在條件 時繼續執 行循

   Shell 提供了 true false 兩條命令用於建立無限循 環結 構的需要,它 的返回狀 總爲 0 總爲 0

   5.case 條件 選擇

   if 條件 句用於在兩個 選項 定一 ,而 case 條件 選擇爲 提供了根據字符串或 量的 從多個 選項 選擇 的方法,其格式如下:

   case string in

  exp-1)

  若干個命令行 1

  ;;

   exp-2)

  若干個命令行 2

  ;;

   ……

   *)

  其他命令行

   esac

   shell 過計 算字符串 string ,將其 果依次和表達式 exp-1 exp-2 行比 ,直到找到一個匹配的表達式 止,如果找到了匹配 項則執 行它下面的命令直到遇到一 分號 ( ;; ) 止。

  在 case 表達式中也可以使用 shell 的通配符 (“*” “[ ]”) 。通常用 “*” case 命令的最後表達式以便使在前面找不到任何相 的匹配 項時執 其他命令行 的命令。

   6. 無條件控制 break continue

   break 用於立即 止當前循 行,而 contiune 用於不 行循 中後面的 句而立即 始下一個循 行。 兩個 句只有放在 do done 纔有效。

   7. 函數定

  在 shell 可以定 函數。函數 實際 上也是由若干條 shell 命令 成的,因此它與 shell 程序形式上是相似的,不同的是它不是一個 獨的 程,而是 shell 程序的一部分。函數定 的基本格式

   functionname

   {

  若干命令行

   }

   調 用函數的格式

   functionname param1 param2……

   shell 函數可以完成某些例行的工作,而且 可以有自己的退出狀 ,因此函數也可以作 if while 等控制 構的條件。

  在函數定 義時 不用 參數 明,但在 調 用函數 可以 有參數,此 shell 將把 些參數分 別賦 予相 的位置參數 $1 $2 ... $*

   8. 命令分

  在 shell 中有兩 命令分 的方法: “()” “{}” ,前者當 shell () 中的命令 將再 建一個新的子 程,然後 個子 程去 括弧中的命令。當用 行某個命令 不想 命令運行 時對 集合 ( 如位置參數、 量、當前工作目 ) 的改 影響到下面 句的 ,就 應該 些命令放在 括弧中, 這樣 就能保 所有的改 生影響,而父 程不受任何干 {} 用於將 行的命令的 果用於另一個命令的 ( 管道 方式 ) 。當我 要真正使用 括弧和花括弧 ( 算表達式的 ) 需要在其前面加上 轉義 (/) 以便 shell 知道它 不是用於命令 行的控制所 用。

   9. 信號

   trap 命令用於在 shell 程序中捕捉到信號,之後可以有三 方式:

   (1) 行一段程序來 一信號

   (2) 接受信號的默 操作

   (3) 視這 一信號

   trap 上面三 方式提供了三 基本形式:

  第一 形式的 trap 命令在 shell 接收到 signal list 中數 相同的信號 ,將 行雙引號中的命令串。

   trap 'commands' signal-list

   trap "commands" signal-list

   了恢 信號的默 操作,使用第二 形式的 trap 命令:

   trap signal-list

  第三 形式的 trap 命令允 信號:

   trap " " signal-list

  注意:

   (1) 信號 11( ) 不能捕捉,因 shell 本身需要捕捉 信號去 行內存的 轉儲

   (2) trap 中可以定 義對 信號 0 ( 實際 上沒有 個信號 ) shell 程序在其 ( exit ) 時發 信號。

   (3) 在捕捉到 signal-list 中指定的信號並 行完相 的命令之後,如果 些命令沒有將 shell 程序 止的 shell 程序將 繼續執 行收到信號 行的命令後面的命令, 這樣 將很容易 shell 程序無法 止。

  另外,在 trap 句中, 引號和雙引號是不同的,當 shell 程序第一次碰到 trap ,將把 commands 中的命令 描一遍。此 commands 是用 引號括起來的 ,那 shell 不會 commands 中的 量和命令 行替 ,否 commands 中的 量和命令將用當 具體 的 來替

  五、運行 shell 程序的方法

  用 可以用任何 編輯 程序來 shell 程序。因 shell 程序是解 釋執 行的,所以不需要 編譯 裝配成目 程序,按照 shell 程的 例,以 bash 例,程序的第一行一般 “# /bin/bash” ,其中 # 表示 行是注 shell 運行 號之後的命令並用文件的其餘部分作 爲輸 入,也就是運行 /bin/bash /bin/bash shell 程序的內容。

   shell 程序的方法有三

   (1)sh shell 程序文件名

   這種 方法的命令格式

   bash shell 程序文件名

   這實際 上是 調 用一個新的 bash 命令解 程序,而把 shell 程序文件名作 參數 傳遞給 它。新啓 shell 將去 指定的文件, 行文件中列出的命令,當所有的命令都 行完 束。 方法的 點是可以利用 shell 調試 功能。

   (2)sh

  格式

   bash

   這種 方式就是利用 入重定向,使 shell 命令解 程序的 入取自指定的程序文件。

   (3)chmod 命令使shell 程序成 行的

  一個文件能否運行取決於 文件的內容本身可 行且 文件具有 shell 程序,當用 編輯 器生成一個文件 ,系 統賦 予的 限都是 644(rw-r-r--) ,因此,當用 需要運行 個文件 ,只需要直接 入文件名即可。

  在 運行 shell 程序的方法中,最好按下面的方式 選擇 :當 建立一個 shell 程序, 它的正確性 沒有把握 當使用第一 方式 調試 。當一個 shell 程序已 經調試 使用第三 方式把它固定下來,以後只要 入相 的文件名即可,並可被另一個程序所 調 用。

六、 bash 程序的 調試

  在 程中 免會出 ,有的 候, 調試 程序比 寫程序花 時間還 要多, shell 程序同 如此。

   shell 程序的 調試 主要是利用 bash 命令解 程序的 選擇項 調 bash 的形式是:

   bash - 選擇項 shell 程序文件名

  幾個常用的 選擇項 是:

   -e :如果一個命令失 就立即退出

   -n 入命令但是不 行它

   -u :置 換時 把未 置的 量看作出

   -v :當 shell 入行 把它 們顯 示出來

   -x 行命令 把命令和它 的參數 示出來

  上面的所有 選項 也可以在 shell 程序內部用 “set - 選擇項 的形式引用,而 “set + 選擇項 將禁止 該選擇項 起作用。如果只想 程序的某一部分使用某些 選擇項時 可以將 部分用上面兩個 句包 起來。

   1. 未置 量退出和立即退出

  未置 量退出特性允 戶對 所有 檢查 ,如果引用了一個未 賦值 量就 shell 程序 的 行。 shell 通常允 未置 量的使用,在 這種 情況下, 量的 值爲 空。如果 置了未置 量退出 選擇項 一旦使用了未置 量就 錯誤 信息,並 止程 序的運行。未置 量退出 選擇項爲 “-u”

  當 shell 運行 ,若遇到不存在或不可 行的命令、重定向失 或命令非正常 束等情況 ,如果 未 重新定向, 信息會打印在 端屏幕上,而 shell 程序仍將 繼續執 行。要想在 錯誤發 迫使 shell 程序立即 束,可以使用 “-e” 選項 shell 程序的 行立即 止。

   2.shell 程序的跟蹤

   調試 shell 程序的主要方法是利用 shell 命令解 程序的 “-v” “-x” 選項 來跟蹤程序 的 行。 “-v” 選擇項 使 shell 行程序的 程中,把它 入的 一個命令行都 示出來,而 “-x” 選擇項 使 shell 行程序的 程中把它 行的 一個命令在行首用一個 “+” 加上命令名 示出來。並把 一個 量和 該變 量所取的 示出來,因此,它 的主要區 在於:在 行命令行之前無 “-v” 打印出命令行的原始內容,而有 “-v” 打印出 經過 後的命令行的內容。

  除了使用 shell “-v” “-x” 選擇項 以外, 可以在 shell 程序內部採取一些 調 的措施。例如,可以在 shell 程序的一些 關鍵 地方使用 echo 命令把必要的信息 示出來,它的作用相當於 C 言中的 printf 句, 這樣 就可以知道 程序運行到什 地方及程序目前的狀

  七、 bash 的內部命令

   bash 命令解 程序包含了一些內部命令。內部命令在目 列表 是看不 的,它 shell 本身提供。常用的內部命令有: echo eval exec export readonly read shift wait 和點 (.) 。下面 簡單 其命令格式和功能。

   1.echo

  命令格式:echo arg

  功能:在屏幕上打印出由arg 指定的字符串。

  2.eval

  命令格式:eval args

  功能:當 shell 程序 行到 eval shell 入參數 args ,並將它 們組 合成一個新的命令,然後 行。

   3.exec

  命令格式: exec 命令命令參數

  功能:當 shell 行到 exec ,不會去 建新的子 程,而是 行指定的命令,當指定的命令 行完 該進 程,也就是最初的 shell 止了,所以 shell 程序中 exec 後面的 句將不再被 行。

   4.export

  命令格式: export 量名或: export 量名 =

  功能: shell 可以用 export 把它的 量向下 入子 shell 從而 承父 程中的 量。但子 shell 不能用 export 把它的 量向上 入父 shell

  注意:不 任何 量名的 export 句將 示出當前所有的 export 量。

   5.readonly

  命令格式: readonly 量名

  功能:將一個用 shell 標識爲 不可 的。不 任何參數的 readonly 命令將 示出所有隻 shell 量。

   6.read

  命令格式:

   read 量名錶

  功能:從 設備讀 入一行,分解成若干字, 賦值給 shell 程序內部定 量。

   7.shift

  功能: shift 句按如下方式重新命名所有的位置參數 量: $2 $1 $3 $2…… 在程序中 使用一次 shift 句,都使所有的位置參數依次向左移 一個位置,並使位置參數 “$#” 減一,直到減到 0

   8.wait

  功能:是 shell 等待在後臺啓 的所有子 束。 Wait 的返回值總 是真。

  9.exit

  功能:退出shell 程序。 exit 之後可有 選擇 地指定一個數字作 返回狀

   10.“.”( )

  命令格式: . Shell 程序文件名

  功能:使shell 入指定的shell 程序文件並依次 行文件中的所有 句。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章