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=10,MYNAME=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
下一篇 2017-04-16

相關推薦

  • LVM理論及實踐

    LVM綜述創建LV創建PV:pvcreate DEVICES創建VG:vgcreate VG_NAME PV_DEVICES創建lv格式化:mkfs.ext4 /dev/vg0/lv0掛載LVM的擴展擴展LV:lvextend擴展后檢查掛載文件夾大小,發現擴展前后沒有變化這是因為硬盤的修改需要同步:resize2fs /dev/vg0/lv0假設這時候VG的…

    Linux干貨 2016-09-19
  • 第一天課程內容

    一 連接VNC 主機名:172.20.0.100 二 課堂資源下載 ftp://172.16.0.1 三 博客作業 ??? 優秀示例 www.yulongjun.com ??? 博客地址 www.www58058.com ??? 作業要求 1.每周一篇或更多,整理當周內容。 2.老師周五發鏈接地址,提交博客鏈接。 四 職業發展線路 運維 > Pytho…

    Linux干貨 2018-03-26
  • CentOS6/7下不關機識別新添加的scsi硬盤

    1)需求說明 在虛擬機中,我們在服務器開機的狀態下添加新的磁盤或者說從存儲上映射某個LUN區域給服務器,不重啟系統的情況下,往往不能夠直接識別到磁盤,在遇到這種情況的時候,我們可以讓系統重新掃描讓服務器重新識別到磁盤。 2)處理步驟 下面看一下在系統不重啟的情況,如何讓系統認識新的磁盤,并能對其分區與格式化 1、在開機狀態下新增磁盤 2、執行下面的命令 ec…

    Linux干貨 2016-07-22
  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統;  (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@localhost ~]# fdisk /dev/sdb #創建10G分區 Welcome to fdisk (util-linux 2.23.2). Changes wi…

    Linux干貨 2017-02-19
  • Linux基礎知識第一課

    一、計算機的組成:             CPU:運算器、控制器、寄存器、緩存            存儲器:內存,RAM(Random …

    Linux干貨 2016-09-12
  • Bash 三種排序算法的簡單實現

    Bash 三種排序算法的簡單實現

    2017-07-09
欧美性久久久久