SHELL中的變量

SHELL中的變量

 

         運行SHELL腳本中的單個命令自然有用,但這有其自身的限制。通常你會需要在SHELL命令使用其他數據來處理信息。這可以通過變量來實現。變量允許你臨時性地將信息存儲在SHELL腳本中,以便和腳本中的其他命令一起使用。

1 環境變量                                               

SHELL維護著一組環境變量,用了記錄特點的系統信息。比如系統的名稱、登錄到系統上的用戶名、用戶的默認家目錄以及SHELL查找程序的搜索路徑??梢杂?/span>set命令來顯示一份完整的當前環境變量。

[root@local data]# set |head -30

ABRT_DEBUG_LOG=/dev/null

BASH=/bin/bash

BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath

BASH_ALIASES=()

BASH_ARGC=()

BASH_ARGV=()

BASH_CMDS=()

BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d

[. . . ]

在腳本中,你可以在環境變量名稱前加上美元符 $ 來使用這些環境變量。

例如:[root@local data]# echo $HOME

                             /root

2 用戶變量                                               

           處理環境變量,SHELL腳本中還允許在腳本中定義和使用自己的變量。定義變量允許臨時存儲數據并在整個腳本中使用,從而使SHELL腳本看起來更像一個真正的程序。

           用戶變量定義規則:可以用字母、數字、下劃線組成的文本字符串。長度不超過20個。用戶變量區分大小寫。

           使用等號將賦值給用戶變量。注意:在變量、等號和值之間不能出現空格。

例如:var1=10MYNAME=xiaoming。

           1SHELL會自動決定變量值得數據類型。在腳本的整個生命周期中,SHELL 腳本中定義的變量會一直保持著它們的值,但在SHELL結束時會被刪除。

           2)變量每次被引用時,都會輸出當前賦給它的值。引用一個變量是需要使用美元符”$”,二引用變量來對其進行賦值時則不要使用美元符。

3 只讀變量                                               

           只能聲明,但是不能修改和刪除。

聲明只讀變量:

                    readonly
      name

                      declare  -r    name

查看只讀變量:      readonly   -p

4 位置變量                                               

        在腳本代碼中調用命令行傳遞給腳本的參數

$1、$2……:對應第12….個參數,shift[n] 換位置

$0:腳本本身

$*:傳遞給腳本的所有參數,全部參數合為一個字符串

$@:傳遞給腳本的所有參數,每個參數為獨立的字符串

$#:傳遞給腳本的參數的個數

注意:$@、$* 只有在被雙括號擴起來的時候才有差異

set – – 清空所有位置變量

5 命令替換                                               

           SHELL腳本中最有用的特性之一就是可以從命令輸出中提取信息,并將其值賦給變量。把輸出賦給變量之后,就可以隨意在腳本中使用了。

           有兩種方法可以將命令輸出賦給變量:

(1)       反引號 ( ` )

(2)       $( ) 格式。

例如: testing=`date`

  或者testing=$(date)

在腳本通過命令替換獲得當前日期并用來生成唯一文件名。

#!/bin/bash

#

today=$( date +%Y-%m-%d-%H:%M:%S)

ls /root/123 
al  >log.$today

 

原創文章,作者:linux is not unix,如若轉載,請注明出處:http://www.www58058.com/73455

(0)
linux is not unixlinux is not unix
上一篇 2017-04-16 19:40
下一篇 2017-04-16 20:21

相關推薦

  • 馬哥教育網絡21期+第十一周練習博客(下)

    馬哥教育網絡21期+第十一周練習博客(下) 3、描述DNS查詢過程以及DNS服務器類別。 DNS:Domain Name Service 通俗的稱為地址解析,使用TCP和UDP的53端口,是屬于應用層的協議; DNS查詢有2種方式:     遞歸查詢:至發送一次請求,就能找到最終的結果的查…

    Linux干貨 2016-09-26
  • 關于 進程和性能監控

            Linux系統狀態的查看及管理工具:     pstree, ps, pidof, pgrep, top, htop, glance,pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup pstree命…

    系統運維 2016-09-11
  • CentOS7修改網卡為eth0

    1.編輯網卡信息 [root@linux~]# cd /etc/sysconfig/network-scripts/  #進入網卡目錄 [root@linux~network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0  #重命名網卡名稱 [root@linux network-…

    Linux干貨 2016-10-25
  • N25 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [jizo@jizo ~]$ who | cut -d" " -f1 | uniq jizo  2、取出最后登錄到當前系統的用戶的相關信息。 [root@jizo ~]# who | tail -l jizo     …

    Linux干貨 2016-12-18
  • Linux基礎命令及獲取命令幫助

    何為命令?         linux命令是對Linux系統進行管理的命令。對于Linux系統來說,無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。linux命令在系統中有兩種類型:內置She…

    Linux干貨 2016-10-25
欧美性久久久久