linux shell script.doc_第1页
linux shell script.doc_第2页
linux shell script.doc_第3页
linux shell script.doc_第4页
linux shell script.doc_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chap 0 - 前言 ( UNIX Shell Programming not for guru . )(0.1) 讀者需要那些基礎 ?這篇文章的主題是 UNIX Shell Programming . 閱讀這篇文章須要一點基礎 , 包括 : 對 UNIX 的命令要有一點認識 , 尤其是常用 , 重要的命令 . 此外 , 你也必需會在 UNIX 上使用 editor , 像 vi , joe 或emacs 等 . 當然 , 假如你有寫程式的經驗 , 那麼 UNIX ShellProgramming 對你來說不過是反掌折枝罷了 . (0.2) 使用那一種 Shell ? Why ?既然 Shell 有很多種 , 我們所要介紹是最早由 AT&T Bell Labs 的Stephen Bourne 所寫的標準 Shell , 也就是所謂的 Bourne Shell .在一些情況下 , 也會順便提一下 C Shell 相關的東西 . 既然現在已經有了更新更好的 Shell , 那我們為什麼還要介紹 BourneShell 呢? 這是因為 , 在 UNIX Shell Programming 中 , 有許多都還是用 Bourne Shell 的語法寫成的 , 尤其像 /etc/rc.X ( SunOS ) 而一般使用者或許用 C Shell 的增強版 tcsh 或 bash ( Bourne AgainShell ) 這些比較新的 Shell . 不過沒有關係 , 只要系統中有 sh( Bourne Shell ) 這個直譯器存在 , 那麼 , 我們都可以用 BourneShell 的語法來寫程式 . ( 沒有 sh 的系統 , 是很難想像的 . ) 還有一點 , 用 sh 來寫程式實際上比用 csh 要好 , 網路上已經有討論過了 , 很多書也都提到用 csh 寫程式的缺點 , 並建議不要用csh 來寫程式 . 我個人沒有什麼意見 , sh 與 csh 就好比程式語言中的 Pascal 與 C (只是比喻) , 想必學過這兩種語言的人都知道 ,只要學會了其中一種 , 另一種也不算太難學 , sh 與 csh 也是一樣 .況且寫程式能真正作事就可以 , 不需要一下子用 sh , 一下子用 csh來寫程式 . *注意 ! 所有的例子都要在 Bourne Shell 系列的環境下操作建議先看看 2.3 , 才不會搞了半天 , 才發覺原來你是用 C Shell系列的 Shell (Shell 的種類及系列可參考 2.3)此外 , 文中的一些例子都是在 Linux 下操作 , 在 SunOS 或 HP上 , 命令也許有少許的不同 . 當你在演練時 , 假如不能正確的執行 , 你應該看看指令的 manual . 像 SunOS 的 find 與 Linux的 find 就有差異 . 大部份的例子都可以在各種不同的平臺上執行 .*(0.3) 本篇文章的架構 本來想用 html 來寫的 , 這樣似乎比較好 , 但是覺得有點麻煩 , 所以還是用平常的格式來寫 , 各位假如用 joe , 那麼當看到 (參考 x.y)時 , 你還是可以用 ctrl-k f 來尋找 x.y 的標題 ; 在 vi 下也可以用/x.y 來尋找 , 這樣也許也可以達到 hypertext 的效果吧 . :)Chap 1 - 簡介Chap 2 - 基本知識Chap 3 - Shell Programming 中的資料表示Chap 4 - Shell Programming 中的語法Chap 5 - 讀取資料及程式偵錯附錄一 - Shell Summary 及 一些 Shell Script 的例子附錄二 - grep 簡介及 regular expressions參考資料 - 介紹一些相關的書及資料(0.4) 假如你已經對 Bourne Shell Programming 很熟 .那也許附錄一 Shell Summary 會對你有複習及快速參考的好處 !還有 , 參考資料中的書目 , 都是值得一看的書 , 假如你還沒看過 ,那我想你可以參考看看 . 當然 , man 及 grep 的配合 , 也常常可以助你一臂之力 .Chap 1 - 簡介無疑的 , UNIX 是一個功能強大的作業系統 , 它多人多工特性 , 網路的支援 , 多采多姿的 X Windows System , 都相當的吸引人 . 除此之外UNIX 還有一項重要的特性 , 就是它提供了數以百計的命令 .每個人都知道 , DOS 下面也不過二三十個命令 , 這二三十個命令可能一兩天就可以學的很好了 ; 但 UNIX 作業系統則不然 , 數百個命令就算都學會了 , 若我們不知道如何去 組合這些命令 , 那我們將失去學習UNIX 的最大樂趣 !有人會覺得疑惑 : 組合命令會有趣嗎 ? 什麼叫作 組合命令 ?這就是我們所要學習的 . 現在就舉一個最簡單的例子而言 : 請計算目前工作目錄下共有多少個普通檔案 ( Regular File ) ?當你遇到這樣的問題 , 你要如何解決 ? 有人會說 : 我用 ls -l 列出目前工作目錄下所有的檔案 , 然後慢慢的數 . , 假如你用了這樣的方法 , 而目前工作目錄下又有數百個檔案 , 那麼 , 我真的很敬佩你 愚公移山 的精神 . 還有些人比較 暴力 , 他說 : 這個嘛很簡單 , 我寫一個 C 語言程式 , 用 opendir , lstat 等函數來計算某一目錄下有多少個普通檔案 . 假如你要這樣做 , 那我當然不反對 , 常練習寫程式也是不錯的 . 然而 , 就為了這麼小小的一個問題而寫一段 C 語言的程式 , 未免太小題大作 . 實際上 , 解答的關鍵就在 : 你是不是會從數百個 UNIX 的命令中挑出適合的命令 , 然後把這些命令組合起來 , 以達到我們所要的目的 ! . UNIX 的每個命令就好比各種不同的 IC , 每種 IC 都有它特殊的作用 , 藉由不同 IC 的組合 . 我們可以達到我們所要的功能 , 要達到目的的方法 , 常常不是只有一種 . 上面這幾句話相當重要 , 各位現在也許還不清楚 . 不過上面幾句話所提的 , 的確就是 UNIX 頗為吸引人的地方之一 .除了命令之外 , Shell 提供了一些類似一般程式語言的語法 , 我們可以利用這些語法來寫程式 . 而這點也正是本篇文章的最主要內容 .Chap 2 - 基本知識(2.1) 什麼是 Shell ?我們可以把 UNIX 切成兩方面來看 , 一部份是系統的核心 (kernel) ,另一部份就是系統中的應用程式 . 舉凡我們常用的一些命令 , 像ls , find 與 Shell 一樣 , 都可被歸類為應用程式 . 所以 , Shell的地位與其它的應用程式並沒有什麼差別 .我們可以看看簽入 UNIX 作業系統的過程 : 當我們輸入 username 之後 , getty 就結束 , 取而代之的是 login . 在我們輸入正確的 password 後 , 系統就依照 /etc/passwd 中的記錄 , 為使用者啟動相對應的 Shell . 在這個時候 , 使用者就會得到一個提示符號 .接著我們就可以下達一些命令 . - getty - login - shell - logout - | |-Shell 有另一個名稱叫做 命令列直譯器 (command interpreter)從這個名稱當中 , 我們就可以了解到 Shell 實際上為命令列的翻譯官當我們在提示符號後輸入一長串的命令 , 並按下 Enter 之後 , Shell就將我們所輸入的東西 , 做一個適當的分析及處理 .(2.2) Shell 負責的事對系統做交談性的使用 . 包含了輸出輸入導向 ( 參考 2.5 ) ,管線 ( 參考 2.6 ) Wildcard 的展開及匹配 ( 參考 2.4 ) , 另外還有 Job Control( 從 SVR4 開始) , 變數環境設定?. 解譯命令 .還有一點很重要 , Shell 有它自己內建的程式語言 , 利用它的語法我們可以來寫程式 , 寫出來程式功能並不像一般的程式語言 ( 如 C語言 ) 那麼多 , 然而 , 在很多情況下就夠用了 . 這部份也就是整篇文章的重點 .(2.3) UNIX 系統上 Shell 的種類在 DOS 中 , 想必各位一定都知道它的 Shell 為 . 特別要說明的是 : Shell 是可以被置換掉的 ! 所以 , 許多人在 DOS中 , 常常把他們的 Shell 由 換成 4 , 以得到更多的功能 , 這已經是很平常的事了 . 在 UNIX 系統中也是一樣 , 使用 chsh 這個命令 , 你可以挑你喜歡的 Shell 來使用 . 合法的 Shell 清單被列在 /etc/shells 這個檔案中 .Shell 的種類可以分為兩個支派 , 一為由 Bourne Shell 衍生而來的包括了 sh (Bourne Shell) , ksh (Korn Shell) , bash (Bourne Again Shell) , zsh (Z Shell) ; 另一支派為 C Shell 衍生而來的 ,包括了 csh , tcsh . 現在許多人作業的環境常常是在 csh 或 tcsh之下 , 尤其是從 BSD 衍生而來 SunOS 的環境 .你可以使用 echo $SHELL 來獲知你現在到底使用那一種 Shell . 或者直接看 /etc/passwd 的最後一個欄位 .(2.4) Wildcard 的展開及匹配 Wildcard 有些人把它翻譯成 萬用字元 , 下面所列舉的 項目 , 並不盡然每一種 Shell 都支援 , 各位要自己試試看 .(2.4.1) * : 代表任意的字串 ( 字串可以是空的 ) % ls haha haha1 haha2 memo1 memo13 memo2 memo23 % ls haha* haha haha1 haha2 % ls memo* memo1 memo13 memo2 memo23(2.4.2) ? : 代表任意一個字元 % ls memo1 memo13 memo2 memo23 % ls memo? memo1 memo2 % ls memo1? memo13(2.4.3) : 代表符合中所列舉的字元 % ls haha haha1 haha2 memo1 memo13 memo2 memo23 % ls memo12 memo1 memo2 a-ebc 會符合 abc , bbc , cbc , dbc , ebc (2.4.4) !: 中的字元 , 若加了 ! , 則表示不符合中所列舉的字元 % ls haha haha1 haha2 memo1 memo13 memo2 memo23 % ls memo!1 memo2 !a-zbc 會符合不是以小寫英文字母開頭 , 後面接著 bc 的字串 . 如會符合 : Cbc , 6bc 等 . (2.4.5) word1,word2. : 如 my_dog,cat,pig 會符合 my_dog my_cat , my_pig (2.4.6) : 接在 之後的特殊字元 , 其特殊的意義會被取消 例如 , 有一個檔案 , 它的名字真的叫 *abc , 那我們得用 cat *abc 才能把 *abc 中的內容顯示出來 . (2.4.7) 更多關於 Wildcard 的討論 : (I) glob : 這種 Wildcard 匹配的動作 , 我們稱為 globbing 在很多種 Shell 之中都有一個叫作 noglob 的變數 , 可以把 Wildcard 展開匹配的動作關掉 . % ls *bc abc bbc cbc dbc % set noglob output_file這個 的符號就是導向符號 .下表是一般經常看到的輸出輸入導向 , prog 就是 program 的意思而 file 就是一個檔案: 功能 sh,ksh,bash csh,tcsh-把標準輸出導到一個檔案 prog file prog file把標準輸出導到檔案描述值 n prog &n把原來輸出至檔案描述值 m prog m&n的輸出與輸出至檔案描述值 n的輸出 , 一起導向至檔案描述值 n把標準錯誤輸出導到一個檔案 prog 2 file把標準輸出關閉 prog &-把標準輸出以及標準錯誤輸出 prog file 2&1 prog & file導到一個檔案把標準輸出導到 f1 , 把標準 (prog f1) 2f2 (prog f1) & f2錯誤輸出導到 f2-把標準輸出導到一個檔案的後面 prog file prog file把標準錯誤輸出導到一個檔案的 prog 2 file後面把標準輸出以及標準錯誤輸出導 prog file 2&1 prog & file到一個檔案的後面-把檔案當作標準輸入 prog file prog file從檔案描述值 n 的地方讀取 prog &n當作 prog 的輸入 把標準輸入關閉 prog &-把 file1 當成 prog 的標準 prog file2 輸入 , 並把標準輸出的結果再導向至 file2-從鍵盤的輸入當作 stdin , 直 prog who_log 把 w 這個指令的輸出導到一個叫做 who_log 的檔案 cat file1 file2 把 cat file1 的輸出導到一個叫做 file2 的檔案(II) prog 2 file 先寫一個叫做 test1.c 的 C 語言程式如下 : #include void main(void) print(Standard Error Test); /* 故意寫錯 */ 接著輸入 cc test1.c errmsg 此時 , 原本在終端機上的錯誤輸出就會被導到 errmsg 這個檔案中 還有 , prog 2 /dev/null 可以抑制錯誤訊息的輸出 , 因為它把 標準錯誤輸出導到 /dev/null 這個垃圾桶中 , 這個功能與上面的 prog &- 有相同的地方 , 本來應該輸出的訊息都被壓抑了 . 只 不過一個是抑制錯誤訊息輸出 , 一個是抑制正常訊息輸出 . 不過 prog 2&- 就可以達到與 prog 2 /dev/null 相同的效果 .(III) prog file 2&1 我們可以試試下面的命令 : find / -size +2000k /output 2&1 接著你可以在你的 Home Directory 下找到 output 這個檔案 , 你 可以看看它的內容 . 你就會發覺 , 有些目錄對你來說是 Permission denied 的 , 這些都是錯誤訊息的輸出 . 你也會看到 有些檔案名 , 這些檔案都是大於 2000k 的 , 屬於正常訊息的輸出 所以 , output 這個檔案的確包含著標準輸出以及標準錯誤輸出的 訊息 . * 注意 ! SunOS 上的 find 是以 block 為單位 , 所以 , 假 如你在 SunOS 上操作 , 那請把 +2000k 的 k 去掉 , 如下 : find / -size +2000 /output 2&1 (IV) (prog f1) 2f2 再一次的 , 我們用上面的命令 , 但改為 : (find / -size +2000k /normal_out) 2/tmp/error_out 在 (III) 中 , 我們把正常訊息的輸出與錯誤訊息的輸出都混在 /output 這個檔案中 . 從某個角度來說 , 這不是很好的作法 , 我們所希望的 , 是把正常訊息的輸出放在一個檔案 , 而錯誤 訊息的輸出放到另一個檔案 . 此時 , 我們就要採用 (IV) 這個 方法 . 在上面的命令中 , 我們把 find 這個命令的正常訊息輸出 導到 /normal_out 這個檔案 , 而錯誤訊息輸出我們就把它導到 /tmp/error_out 這個檔案中 . (V) 至於 prog file , prog 2 file , prog file 2&1 與 prog file , prog 2 file , prog file 2&1 只是把 換成 , 而它的差別就只在 : 是附加的意思 並不像 會把原來導向過去的檔案清除 (假如欲導向過去的檔案 已經存在 , 而且 noclobber 變數沒有被設定的話 !當然 , 若原來 檔案不存在 , 那就會製造出新的檔案) 所以 , 試試看下面的命令就可明白 : ls -la /usr file1 ls -la /etc file1 cat file1 file2 ls -la /etc file2 - 把輸出的結果附加在 file2 後 cat file2 - 你看到的是 /usr 與 /etc 下所有的內容 (VI) prog file 有些命令 , 它要處理的內容是要由標準輸入中拿的 . 如 mail 這 個命令 , 若我們在提示符號下鍵入 mail .tw 此時 , 我們就得由鍵盤上輸入一些資料 , 最後按 Ctrl-d 作為結 束 . 此時 , 我們剛剛輸入的資料就會經過 mail 處理寄出電子郵 件 . 然而 , 這樣作的壞處是 , 萬一你打錯了字想修改前面幾列 的內容 , 就變得困難了 . 所們所希望的 , 是信件的內容先用 普通好用的文書編輯器寫好 , 再把寫好的東西寄出去 . 此時 , 就派上用場 , 我們就把寫好的檔案當作是從標準輸入給與的內容 導向給 prog . 所以 mail .tw report report 就相當於從鍵盤上輸入的內容 .(VII) prog file2 這個型式是由兩個導向符號所組成 , 看起來有點複雜 , 其實一點也 不 . 只要你拆成兩部份來看 : prog file2 (i) (ii) 第 (i) 部份 : 把 file1 當作是 prog 的標準輸入 第 (ii) 部份 : 把第 (i) 部份的輸出結果 , 導向至 file2 中 舉個例子 : tr a-z A-Z dest 首先 , tr a-z A-Z dest 的話 , 我們會在 終端機上看到轉換後的輸出 . 然而 , 我們使用 dest 再把原來應 該在終端機上的輸出導向到 dest 這個檔案中 . 所以 , dest 就會 是 sour 經過轉換後的內容 .(VIII) prog c 這個型式看起來有點奇怪 , 它所作的事就是 : 從標準輸入讀取資料 一直遇到 c 為止 , 然後把這些資料都交給 prog 處理 . 這種動作有個名稱叫 Here Document 比如說下面的例子 : % mail veronica this is a test but . End_Of_Letter - 要單獨一列 本來我們輸入 mail veronica 的話 , 那麼我們就得從鍵盤上輸入 資料 , 直到按下了 Ctrl-d 為止 . 然而 , 我們現在指定 : 一 直從標準輸入讀取資料 , 直到遇見 End_Of_Letter 為止 . 不過 上面的例子並不常見 . 比較常見的是下面這個例子 : % cat This is Here Document Test This Sample is quite typical You will see the same style in some Shell Script See You It_is_OK 如此作可以一次顯示一大段訊息 , 而不必很麻煩的用許多列 echo 來做 .(2.6) 管線 (Pipes)管線就是達成 組合命令 的方法 , 極端重要 ! 它的型式是這種樣子 prog1 | prog2 其中 , | 就是管線的符號 , 上面的意思是 : 把 prog1 的輸出 , 當做 prog2 的輸入 . 你也可以想像成 : prog1 及 prog2 是兩臺機器 ,| 是它們之間的傳送帶 , 經過 prog1 處理過的東西 , 再交給 prog2去加工 . 舉幾個例子 : ls -la | more - 把 ls -la 的輸出交給 more 去作處理 , 想 當然耳 , more 會把來自 ls -la 的輸出作 分頁處理 . man ls | wc -l - 把 man ls 的輸出交給 wc 去作處理 , wc 使用選項 -l 可計算來自 man ls 的輸出 有多少列 .當然 , 你也可以組合出兩個以上或更多的管線 : prog1 | prog2 | prog3如: who | cut -c1-8 | sort - who 的輸出交給 cut 處理 , cut -c1-8 會取出每列的第 一到第八個字元 , 然後再把 這些輸出交給 sort 做排序所以 , 熟悉每個命令要的輸入是什麼 ? 又會產生什麼輸出 ? 是有效使用管線的不二法門 ! 各位應該一邊使用管線 , 一邊加強命令的基礎 , 當你熟悉到了某一程度 , 就可以自己利用管線 , 輸出輸入導向來 創造 出新的工具 , UNIX 有趣且重要的地方就在這裡 ! 此時 , 我們在 Chap 1 所提的 : 計算目前工作目錄下有多少普通的檔案 ? 假如你對命令熟悉的話 , 你應該可以回答出來了 ,而且方法太多種了 !像我可以舉一種方法如下 (不計算以 . 為開頭的隱藏檔) : ls -l | grep - | wc -l 各位去分析看看 , 為什麼可以計算出來 , 並且去想想看它是如何工作的 .(2.7) 一些環境變數的指定 在 Shell 中 , 有一點很重要的是 , 我們自己可以設定一些變數 ,其中有些變數可以影響操作環境的行為 , 或者是影響應用程式 .舉個例子來說好了 , 各位常用的 elm , 它所使用的文書編輯器就會受到 EDITOR 這個變數的影響 . 假如 EDITOR 的內容是 joe ,那麼 elm 就會使用 joe 拿來當文書編輯器 , 假如 EDITOR 的內容是 vi , 則使用 vi . 既然我們知道某些變數可以影響應用程式甚至整體的操作行為 , 那我們要如何設定這些變數呢 ? 請看下表 sh,ksh,bash csh,tcsh-指定變數 var=value set var value 指定環境整體 export var=value setenv var value 變數-上表中 , var 是變數名 , value 是變數值 ; 還有 上面兩種設定是不一樣的 , 因為 Shell 之中還可以再 invoke 一個 Subshell , var=value 只能算是設定區域性的變數 , 只在設定的那個 Shell 之中有效 , 對於 Subshell 就無效了 . 而 export var=value 就不一樣了 , 它對於 Subshell 也有效 .你可以做下面的實驗 : % color=blue - 把 blue 指定給變數 color , % echo $color - 顯示變數 color 的內容 blue % sh - 開啟一個 subshell % echo $color - 顯示變數 color 的內容 - 沒有變數 color 的內容 % % export color=blue - 把 blue 指定給環境整體變數 color % echo $color - 顯示變數 color 的內容 blue % sh - 開啟一個 subshell % echo $color - 顯示變數 color 的內容 blue 1-5) echo haha; 6-10) echo lala; esac haha你自己也可以試試看 , 不過你得使用 Bourne Shell 系列的 Shell好了 , 我們已經看到可以在提示符號下寫程式 , 然而 , 我們並不喜歡這樣做 . 因為在提示符號下要修改程式很麻煩 , 小的程式也就算了 , 大的程式我想沒有人會喜歡這種方法 . 所以 , 在一般的情況下 , 我們可以先用文書編輯器寫好一個程式並存成一個檔案 , 然後再把這個檔案交給 Shell 去執行 , 而這個檔案就稱為 ShellScript ! 先給各位看看一個最簡單的 Shell Script : #!/bin/sh ps -a | more上面的兩列內容 , 我把它放在一個檔案中 , 然後直接執行它就可以.但不要忘記 , 你要對這個檔案有讀以及執行的權限 .(3.2) Shell Programming 的兩大要素 : 資料及語法 假如你學過高階語言 , 你應該可以了解到 , 其實每種高階語言的概念都差不多 , 它們只是語法不同 , 也許資料表示的方法也有少許的差別 . 但是 , 學會了一種再去學別種並不算難 .Shell Programming 也是一樣 , 它還是有大家熟悉的語法如 if , dofor , while 等等的東西 . 比較特殊的是它的資料型態 .下面就開始進入 Shell Programming 的資料表示 . 語法請看 Chap 4(3.3) 註解及 #!/bin/sh 很多程式語言都有其註解格式 , 在一個 Shell Script 中 , 假如我們看到一個 # 號 , 那從 # 號開始一直到那列的結尾都是註解 .註解只是提高程式的可閱讀度 , 對 Shell 來說並不會做解譯的動作舉一個 Shell Script 如下:#!/bin/sh# # Count_bash_user_number : report how many users use bash#grep -c /bin/bash /etc/passwd # grep -c : print match # number這個 Shell Script 中 , 真正作事的只有一列 , 其它 # 後接的文字都是註解 . 但特別要注意的是 : #!/bin/sh 不是註解 , 雖然它是以 # 為開頭 , 但是它有特殊的意義 . 在最早的時候因為只有 sh所以也並不需要 #!/bin/sh , 但是後來 Shell 的種類越來越多 , 有些人用 csh , 有些人用 tcsh . 這時候我們就要特別的指出 , 這個 Shell Script 是用那一種 Shell 寫的 . 假如你的 Shell Script是以 Borune Shell 的語法寫成的 , 那你就得加上 #!/bin/sh , 假如是以 C Shell 的語法寫成的 , 那你得加上 #!/bin/csh . 這列一定要加嗎 ? 答案是不盡然 , 如果你目前使用的 Shell 與你寫的Shell Script 使用相同的語法 , 那可以不加 . 但是我舉一個例子:假如你用的是 tcsh , 但卻用 sh 的與法來寫 Shell Script , 而沒有在 Shell Script 的第一列加上 #!/bin/sh , 那麼會發生什麼情形?很簡單 , tcsh 會以為你寫的 Shell Script 是用 tcsh 的語法寫成的 , 所以在解譯的過程中就會出現錯誤 . 但是若我們有加 #!/bin/sh那麼 , tcsh 就會叫用 sh 來解譯你的 Shell Script , 自然就不會有錯誤產生 .我的建議是 : 無論如何 , 請明確的在 Shell Script 的第一列指出這個 Shell Script 是用那一種 Shell 的語法寫成的 !(3.4) 變數(3.4.1) 變數的指定如同大部份的程式語言一樣 , Shell Programming Language 中也有變數的存在 , 那我們要如何指定一個變數呢 ? 很簡單 , 如下: variable=value舉幾個例子 : count=1 X11_bin_path=/usr/X11/bin但在指定變數時 , 有幾點要注意的 : 第一 , 等號的左右兩邊不要有空格 , 譬如說 , 不可寫成 : color = blue , color= bluecolor =blue , 一定得寫成 : color=blue . 第二 , 變數沒有所謂的 資料型態 . 當你指定變數時 , 變數只是被當成字元的組合來看待 . 如上面的例子 : count=1 , count 放的是單純的 1 , 而不像 C 語言中所謂 整數型態的 1 第三 , 變數指定的動作實際上也可以在提示符號後直接作 . ( 如同 2.7 所提到的 )(3.4.2) 變數的內容 : $variable使用 echo $variable 可以顯示變數的內容 .像剛剛的例子 , count=1 , 那麼 , 使用 echo $count 就會得到 1使用 echo $X11_bin_path 就會得到 /usr/X11/bin所以 , 我們可以了解到 : $variable 是變數的內容 !我現在給一個問題 , 各位練習看看 : 把 var1 的內容設定成 10 ,把 var2 的內容設定成 20 , 接著把 var2 的內容設定給 var1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论