乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      深入淺出Shell編程: Shell 變量

       looline 2006-12-30
      先不要管Shell的版本,來看看Shell 變量,在Shell中有三種變量:系統(tǒng)變量,環(huán)境變量,用戶變量。其中用戶變量在編程過程中使用最多,系統(tǒng)變量在對(duì)參數(shù)判斷和命令返回值判斷會(huì)使用,環(huán)境變量主要是在程序運(yùn)行的時(shí)候需要設(shè)置。

      1 系統(tǒng)變量

      Shell常用的系統(tǒng)變量并不多,但卻十分有用,特別是在做一些參數(shù)檢測(cè)的時(shí)候。下面是Shell常用的系統(tǒng)變量
      表示方法 描述
      $n $1 表示第一個(gè)參數(shù),$2 表示第二個(gè)參數(shù) ...
      $# 命令行參數(shù)的個(gè)數(shù)
      $0 當(dāng)前程序的名稱
      $? 前一個(gè)命令或函數(shù)的返回碼
      $* 以"參數(shù)1 參數(shù)2 ... " 形式保存所有參數(shù)
      $@ 以"參數(shù)1" "參數(shù)2" ... 形式保存所有參數(shù)
      $$ 本程序的(進(jìn)程ID號(hào))PID
      $! 上一個(gè)命令的PID
      其中使用得比較多得是 $n $# $0 $? ,看看下面的例子: BeautifierPlugin Error: Unable to handle "bash" syntax.
      #!/bin/sh
      #This file is used to explain the shell system variable.
      echo "the number of parameter is $# ";
      echo "the return code of last command is $?";
      echo "the script name is $0 ";
      echo "the parameters are $* ";
      echo "\$1 = $1 ; \$2 = $2 ";
      

      下面是運(yùn)行結(jié)果:

      BeautifierPlugin Error: Unable to handle "bash" syntax.

      -bash-2.05b$ ./chapter2.1.sh winter stlchina
      the number of parameter is 2
      the return code of last command is 0
      the script name is ./chapter2.1.sh
      the parameters are winter stlchina
      $1 = winter ; $2 = stlchina
      

      這個(gè)例子太簡(jiǎn)單了,一點(diǎn)也不實(shí)用,下面來個(gè)實(shí)用的,如果你看不懂,沒有關(guān)系,后面的內(nèi)容會(huì)有詳細(xì)解釋。 BeautifierPlugin Error: Unable to handle "bash" syntax.

      #!/bin/sh
      if [ $# -ne 2 ] ; then
      echo "Usage: $0 string file";
      exit 1;
      fi
      grep $1 $2 ;
      if [ $? -ne 0 ] ; then
      echo "Not Found \"$1\" in $2";
      exit 1;
      fi
      echo "Found \"$1\" in $2";
      

      上面的例子中使用了$0 $1 $2 $# $? 等變量,下面是程序的解釋:

      1. 判斷運(yùn)行參數(shù)個(gè)數(shù),如果不等于2,顯示使用"用法幫助", 其中 $0 表示就是腳本自己。
      2. 用grep 在$2 文件中查找$1 字符串。
      3. 判斷前一個(gè)命令運(yùn)行后的返回值(一般成功都會(huì)返回0, 失敗都會(huì)返回非0)。
      4. 如果沒有成功顯示沒找到相關(guān)信息,否則顯示找到了。
      5. 其中\(zhòng)"表示轉(zhuǎn)義,在"" 里面還需要顯示"號(hào),則需要加上轉(zhuǎn)義符\" .

      下面運(yùn)行的例子:

      BeautifierPlugin Error: Unable to handle "bash" syntax.

      ./chapter2.2.sh usage chapter2.2.sh
      Not Found "usage" in chapter2.2.sh
      -bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh
      echo "Usage: $0 string file";
      Found "Usage" in chapter2.2.sh
      

      2 Shell用戶變量

      2.1 基礎(chǔ)

      不管系統(tǒng)變量有多少,對(duì)于需求來說,總是不夠的。用戶變量是最常用到的變量,使用也十分簡(jiǎn)單。

      用戶定義的變量必須由字母數(shù)字及下劃線組成,并且變量名的第一個(gè)字符不能為數(shù)字, 與其它UNIX名字一樣,變量名是大小寫敏感的. 對(duì)于用戶變量,用戶可按如下方式賦值: BeautifierPlugin Error: Unable to handle "bash" syntax.

        name="Winter"
      
      在引用變量時(shí),需在前面加$符號(hào),用戶也可以在變量間進(jìn)行相互賦值,如: BeautifierPlugin Error: Unable to handle "bash" syntax.
        name="Winter"
      WINTER=$name
      echo "Hello $WINTER !"
      
      輸出結(jié)果應(yīng)該很清楚:Hello Winter !

      這里需要注意一點(diǎn):變量和‘=‘之間不要有空格,‘=‘和賦值也不要有空格,否則shell不會(huì)認(rèn)為變量被定義。掌握了基本的使用方法,你可以完全開始你的編程工作了。不過有時(shí)候需要未雨綢繆,下面介紹用戶變量的一些技巧。

      2.2 使用技巧

      也可以用變量和其他字符組成新的字,這時(shí)可能需要把變量用{}括起,如: BeautifierPlugin Error: Unable to handle "bash" syntax.
       SAT=Satur
      echo Today is ${SAT}day
      
      輸出結(jié)果是: Today is Saturday

      有時(shí)候?yàn)榱吮苊庾兞棵蛣e的字符產(chǎn)生混淆,你最好養(yǎng)成習(xí)慣把變量名用{}括起來。

      對(duì)于未賦值的變量, Shell以空值對(duì)待, 用戶也可以用unset命令清除給變量賦的值.看一個(gè)例子: BeautifierPlugin Error: Unable to handle "bash" syntax.

      #!/bin/sh
      echo "a=$a" ;
      a=2
      echo "a=$a" ;
      unset a
      echo "a=$a" ;
      
      先猜猜結(jié)果是什么? BeautifierPlugin Error: Unable to handle "bash" syntax.
      -bash-2.05b$ ./test.sh
      a=
      a=2
      a=
      
      如果你懂C++,你應(yīng)該知道有個(gè)變量修飾符"const",用于避免程序一不小心對(duì)變量進(jìn)行修改。在shell中,對(duì)于用戶變量,你可以使用同樣的修飾符"readonly", 如果我把上面的例子修改成這樣: BeautifierPlugin Error: Unable to handle "bash" syntax.
      #!/bin/sh
      echo "a=$a" ;
      #下面增加了readonly
      readonly a=2
      echo "a=$a" ;
      unset a
      echo "a=$a" ;
      
      其結(jié)果當(dāng)然會(huì)不一樣了: BeautifierPlugin Error: Unable to handle "bash" syntax.
      -bash-2.05b$ ./test.sh
      a=
      a=2
      a=2
      

      2.3 shell 中的數(shù)組

      shell變量中還能設(shè)置數(shù)組,但是不同的shell版本有不同數(shù)組賦值方法,而bourne shell 中不支持?jǐn)?shù)組方式。因此,如果不是十分需要,還是建議你不要使用數(shù)組。若你的數(shù)據(jù)結(jié)構(gòu)十分復(fù)雜,必須要使用數(shù)組,那么我建議你還是選擇別的語言吧,shell不是萬能的。

      shell有兩種賦值方式,第一種是直接用下標(biāo)賦值: BeautifierPlugin Error: Unable to handle "bash" syntax.

      name[0]="Tom"
      name[1]="Tomy"
      name[2]="John"
      ...
      
      另一種方式對(duì)于不同的shell版本不一樣。bash中賦值: BeautifierPlugin Error: Unable to handle "bash" syntax.
      #!/usr/local/bin/bash
      name=("Tom" "Tomy" "John")
      for i in 0  1 2
      do
      echo $i:${name[$i]} ;
      done;
      
      上面兩種賦值方式達(dá)到的效果一樣。另外,你看見訪問數(shù)組元素的方法了嗎?使用${name[index]}的方式。注意第一行使用的是#!/usr/local/bin/bash, 和以前有些不一樣哦。其輸出結(jié)果是: BeautifierPlugin Error: Unable to handle "bash" syntax.
      -bash-2.05b$ ./test.sh
      0:Tom
      1:Tomy
      2:John
      

      3 shell 環(huán)境變量

      shell 環(huán)境變量是所有shell 程序都會(huì)接受的參數(shù)。shell程序運(yùn)行時(shí),都會(huì)接收一組變量,這組變量就是環(huán)境變量。常用的環(huán)境變量:
      名稱 描述
      PATH 命令搜索路徑,以冒號(hào)為分隔符.注意與DOS下不同的是, 當(dāng)前目錄不在系統(tǒng)路徑里
      HOME 用戶home目錄的路徑名,是cd命令的默認(rèn)參數(shù)
      COLUMNS 定義了命令編輯模式下可使用命令行的長度
      EDITOR 默認(rèn)的行編輯器
      VISUAL 默認(rèn)的可視編輯器
      FCEDIT 命令fc使用的編輯器
      HISTFILE 命令歷史文件
      HISTSIZE 命令歷史文件中最多可包含的命令條數(shù)
      HISTFILESIZE 命令歷史文件中包含的最大行數(shù)
      IFS 定義SHELL使用的分隔符
      LOGNAME 用戶登錄名
      MAIL 指向一個(gè)需要SHELL監(jiān)視其修改時(shí)間的文件.當(dāng)該文件修改后, SHELL將發(fā)消息You hava mail給用戶
      MAILCHECK SHELL檢查MAIL文件的周期,單位是秒
      MAILPATH 功能與MAIL類似.但可以用一組文件,以冒號(hào)分隔,每個(gè)文件后可跟一個(gè)問號(hào)和一條發(fā)向用戶的消息
      SHELL SHELL的路徑名
      TERM 終端類型
      TMOUT SHELL自動(dòng)退出的時(shí)間,單位為秒,若設(shè)為0則禁止SHELL自動(dòng)退出
      PROMPT_COMMAND 指定在主命令提示符前應(yīng)執(zhí)行的命令
      PS1 主命令提示符
      PS2 二級(jí)命令提示符,命令執(zhí)行過程中要求輸入數(shù)據(jù)時(shí)用
      PS3 select的命令提示符
      PS4 調(diào)試命令提示符
      MANPATH 尋找手冊(cè)頁的路徑,以冒號(hào)分隔
      LD_LIBRARY_PATH 尋找?guī)斓穆窂?以冒號(hào)分隔

      這些變量,要關(guān)注的最多的就是PATH, 其重要性不要我說了吧?

      如果你希望把你定義的變量讓其他所有的shell程序都能使用,也就是定義新的環(huán)境變量。你只要使用export關(guān)鍵詞就可以了。例如: BeautifierPlugin Error: Unable to handle "bash" syntax.

      export MY_NAME=Winter
      export PATH=/home/winter/bin:$PATH
      
      上面的程序中,第一行輸出MY_NAME變量,第二行是在環(huán)境變量PATH中增加一個(gè)路徑/home/winter/bin 。如果你希望這些設(shè)置在你登陸unix/linux都有效,你需要把他們加入到你的shell啟動(dòng)腳本中, 如果是使用bash BeautifierPlugin Error: Unable to handle "bash" syntax.
      ~/.bash_profile
      
      其他版本你看一眼就知道了,在你的home目錄下,以"."開頭的文件,一般都會(huì)隱藏起來,你需要使用‘ls -al‘命令來顯示。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多