shell中的變量


運行SHELL腳本中的單個命令自然有用,但這有其自身的限制。通常你會需要在SHELL命令使用其他數據來處理信息。

這可以通過變量來實現。變量允許你臨時性地將信息存儲在SHELL腳本中,以便和腳本中的其他命令一起使用。

1 環境變量

SHELL維護着一組環境變量,用了記錄特點的系統信息。比如系統的名稱、登錄到系統上的用戶名、用戶的默認家目錄以及SHELL查找程序的搜索路徑。可以用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=10,MYNAME=xiaoming

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

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

3 只讀變量

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

聲明只讀變量:

                readonly     name

                declare -r    name

查看只讀變量:    readonly     -p

4 位置變量

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

$1、$2……:對應第1、2….個參數,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


免責聲明!

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



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