Shell腳本之let,echo變量


http://blog.chinaunix.net/uid-26827001-id-3154024.html

 

首先看到好多以這樣開頭的    #!/bin/bash   這個是告訴系統 解釋此腳本文件的Shell程序
# 這個是注釋行,當行有效
腳本程序一般用 xx.sh 文件表示,這樣一樣就可以看出文件的屬性,當然也可以不這樣
一個腳本程序寫完后,如果要執行它,則必須先賦+x  執行權限給它
例如:chmod +x xx.sh,然后用命令 ./filename  執行
 以下是一些知識點:
1. echo :用於顯示(不帶參數,如果有多行則換行輸出)   例如:echo  "hello shell" 
    如果加上參數 -n  表示如果有多行的話,將不換行輸出
    點擊(此處)折疊或打開

  1. #!/bin/bash
  2. # filename is while.sh
  3. count=0
  4. while(($count < 5 ))
  5. do
  6. echo -n " count=" $count
  7. let count=count+1
  8. done

       順便說一句,linux提供2中命令:一種是內部命令,一種是外部命令。解釋執行內部命令要比外面命令快的   多, 同時,解釋內部命令時候,shell不需要創建子進程,而外部命令則需要創建子進程,這就增大了系統的開銷。查看是不是內部命令,可以用如下命令:type  command   例如:type echo
2.
$xx  表示引用變量:如上面的代碼中,第三行定義了變量count, 第四行,第六行 $count  則引用該變量。
3. 位置
變量  : $0 文件名,$1 第一個參數 $2 第二個參數

   點擊(此處)折疊或打開

  1. #!/bin/bash
  2. #filename is first.sh
  3. #have 3 parameter to first.sh
  4. #command is: ./first.sh 1 2 3
  5. # $#:傳入腳本的參數個數
  6. # $*:顯示所以的參數,並以空格隔開
  7. # $0:命令本身,即要執行的文件名
  8. # $1:第一個參數
  9. # $2:第二個參數
  10. # $3:第三個參數 后面一樣 ~等等
  11.  
  12. echo "number of vars:"$#
  13. echo "var of vars:"$0
  14. echo "first var:"$1
  15. echo "second var:$2
  16. echo "third var:$3

4. let :用來執行算數運算和數值表達式測試。
    let 命令的替代表示形式是: ((算術表達式)) ,這樣做的好處是如果表達式中含有特殊的字符,可以告示shell 進行特殊處理:例如,let ″val=a|b″。如果不括起來,Shell會把命令行let val=a|b中的“|”看成管道符,將其左右兩邊看成不同的命令,因而無法正確執行。
    以下代碼執行結果為:1 3 7 10

點擊(此處)折疊或打開

  1. #!/bin/bash
  2. #filename is let.sh
  3.  
  4. i=1
  5. echo "i="$i
  6. let i=i+2
  7. echo "i="$i
  8. let "i=i+4"
  9. echo "i="$i
  10. ((i+=3))
  11. echo "i="$i

5. 函數調用:聲明函數 function name(){~~~~},函數的調用,直接寫函數名稱name即可。

點擊(此處)折疊或打開

  1. #!/bin/bash
  2. # filename is second.sh
  3. # 函數申明和調用
  4. function fun1(){
  5. local a="hello world"
  6. echo "函數調用成功 "$a
  7. }
  8. echo "函數調用前"
  9. fun1
  10. echo "函數調用結束"

6. Shell中的變量種類:局部變量和全局變量
        局部變量 是在函數中用local 聲明的變量:他的作用域是在函數調用開始到函數結束。
        全局變量 在shell腳本下聲明的變量,他的作用域是整個shell的生存周期內。shell結束,全局變量的周期也結束。

點擊(此處)折疊或打開

  1. #!/bin/bash
  2. #filename is localvar.sh
  3. var1="hello shell"
  4. function fun(){
  5. #定義局部變量
  6. local var2="hello local variable"
  7. echo "在函數中 使用局部變量 var2="$var2
  8. echo "調用全局變量1  var1="$var1
  9. }
  10. fun
  11. echo "在函數外調用 局部變量 var2="$var2
  12. echo "調用全局變量2  var1="$var1

補充:環境變量、位置變量、標准變量、特殊變量等
    環境變量:用於所有的用戶進程,可以看成是windows下的環境變量,用export定義:如
              export LOGNAME="fjsm20", 可以用env或export查看系統環境變量
    位置變量:就是調用函數時候的參數,例如:./first.sh 11 22 33 如上面的第3知識點
    標准變量:就是bash環境建立的一些標准環境的標量,他會自動去解析,基本都在/etc/profile中定義了有EXINIT,HOME,IFS,LOGNAME,MAIL,MAILCHECK等(引用網上資料)

     特殊變量: $# 參數個數,$* 列出所有參數,$!顯示后天腳本的進程Id ,$$顯示當成腳本的進程id,$? 最后命令退出的狀態,0 表示正常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM