亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

《鳥哥的Linux私房菜》學習筆記(8)——bash腳

系統 2073 0

一、變量命名 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

????1、只能包含字母、數字和下劃線,并且不能以數字開頭,
????2、不應該跟系統中已有的環境變量重名
????3、命名要有含義

二、變量賦值 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

變量名稱=值var_name=value?等號兩邊不能有空格

      
        
          [root@hao ~]#
        
      
       NAME=
      
        jerry


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME

jerry
      
    

三、bash:變量類型 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????

1、環境變量

  腳本在執行時會啟動一個子shell進程。命令行中啟動的腳本會繼承當前shell環境變量,也就是說環境變量的作用域為當前shell進程及其子shell進程。系統自動執行的腳本(非命令行啟動)則需要自我定義各環境變量。可以使用export設置環境變量。

      export VARNAME=VALUE 或者 VARNAME=VALUE export VARNAME
    

?

      
        
          [root@hao ~]#
        
      
       NAME=
      
        jerry


        
          
            [root@hao 
          
        
      
      
        
          ~
        
      
      
        
          
            ]#
          
        
        export NAME


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME

jerry


        
          
            [root@hao 
          
        
      
      
        
          ~
        
      
      
        
          
            ]#
          
        
         bash


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME

jerry


        
          
            [root@hao 
          
        
      
      
        
          ~
        
      
      
        
          
            ]#
          
        
        bash                     

[root@hao 
      
      ~]# 
      
        echo
      
      
         $NAME

jerry
        
[root@hao ~]# pstree
init-+-NetworkManager-+-dhclient
??? ...
???? |-sshd---sshd---sshd---bash--- su---bash---bash---bash---pstree
???? |-udevd---2*[udevd]
???? `-wpa_supplican

2、本地變量(局部變量)

變量一定是進程的變量,因此在一個shell中聲明的變量在其他的shell中不可用,并且在其子shell中也不可以得到。引用變量要加${varname},也可以不加{}。

      
        
          [root@hao ~]#
        
      
      NAME=
      
        jerry


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME

jerry


        
          
            [root@hao 
          
        
      
      
        
          ~
        
      
      
        
          
            ]#
          
        
         bash


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME




        
          
            [root@hao 
          
        
      
      
        
          ~
        
      
      
        
          
            ]#
          
        
         exit

exit


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME

jerry
      
    

本地變量:VARNAME=VALUE,作用域:整個bash進程。

局部變量 :local VARNAME=VALUE,作用域:當前代碼段。

3、位置變量

 $n

例:寫一個腳本,能接受一個參數(文件路徑),判定此參數是否是一個存在的文件,如果是就顯示“ok”

      
        
          [root@hao ~]#
        
      
       nano filetest.
      
        sh
      
      
        
           [root@hao ~]#
        
      
      
        cat
      
       filetest.
      
        sh
      
      
         

#
      
      ! /bin/
      
        bash

#


      
      
        if
      
       [ -e $
      
        1
      
       ];
      
        then
      
      
        echo
      
      
        "
      
      
        ok
      
      
        "
      
      
        else
      
      
        echo
      
      
        "
      
      
        no such file
      
      
        "
      
      
        fi
      
      
        
           [root@hao ~]#
        
      
      
        chmod
      
       +x filetest.
      
        sh
      
      
        
           [root@hao ~]#
        
      
       ./filetest.
      
        sh
      
        /etc/
      
        fstab

ok


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       ./filetest.
      
        sh
      
        /etc/
      
        fstabs

no such 
      
      
        file
      
    

shift, 每次shift都會剔除一個參數 shift n表示剔除n 個

      
        
          [root@hao ~]#
        
      
       nano filetest1.
      
        sh
      
      
        
           [root@hao ~]#
        
      
      
        cat
      
       filetest1.
      
        sh
      
      
        

#
      
      !/bin/
      
        bash


      
      
        echo
      
       $
      
        1
      
      
        shift
      
      
        echo
      
       $
      
        1
      
      
        shift
      
      
        echo
      
       $
      
        1
      
      
        
           [root@hao
        
         ~]#
      
      
        chmod
      
       +x filetest1.
      
        sh
      
      
        
           [root@hao ~]#
        
      
      ./filetest1.
      
        sh
      
      
        1
      
      
        2
      
      
        3
      
      
        1
      
      
        2
      
      
        3
      
      
        
          
            
            
          
        
      
    

4、特殊變量(系統變量)

用來保存某些特殊數據:

  $?: 保存上一個命令的執行狀態返回值(0-255)。0為正確,其他為錯誤。其中1,2,127系統預留,其他的可以自定義。

      
        
          [root@hao ~]#
        
      
      
        ls
      
       /
      
        var

account  crash  db     games  lib    lock  mail  opt       run    tmp  yp

cache    cvs    empty  gdm    local  log   nis   preserve  spool  www


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
       $?


      
        0
      
      
        
           [root@hao ~]#
        
      
      
        ls
      
       /
      
        varr


      
      
        ls
      
      : cannot access /varr: No such 
      
        file
      
      
         or directory


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
       $?


      
        2
      
    

如果只想看返回的狀態值而不想看輸出結果,則只需將輸出重定向至數據黑洞/dev/null

      
        
          [root@hao ~]#
        
      
      
        ls
      
       /varr &> /dev/
      
        null
      
      
        
           [root@hao ~]#
        
      
      
        echo
      
       $?


      
        2
      
    

  $#:參數的個數

  $*:參數列表

  $@:參數列表(與上面的有不同)

例:寫一個腳本,能接受一個參數(文件路徑),判定此參數是否是一個存在的文件,如果是就顯示“ok”

      
        
          [root@hao ~]#
        
      
       nano filetest.
      
        sh
      
      
        
           [root@hao
        
      
      ~]# 
      
        cat
      
       filetest.
      
        sh
      
      
         

#
      
      ! /bin/
      
        bash

#


      
      
        echo
      
      
         $#


      
      
        echo
      
       $*


      
        echo
      
      
         $@


      
      
        if
      
       [ $# -lt 
      
        1
      
       ];
      
        then
      
      
        echo
      
      
        "
      
      
        Usage:./filetest.sh ARG1 ARG2 ...
      
      
        "
      
      
        

    exit 
      
      
        7
      
      
        fi
      
      
        if
      
       [ -e $
      
        1
      
       ];
      
        then
      
      
        echo
      
      
        "
      
      
        ok
      
      
        "
      
      
        else
      
      
        echo
      
      
        "
      
      
        no such file
      
      
        "
      
      
        fi
      
      
        
           [root@hao ~]#
        
      
      
        chmod
      
       +x filetest.
      
        sh
      
      
        
           [root@hao ~]#
        
      
       ./filetest.
      
        sh
      
      
        0
      
      
        





Usage:.
      
      /filetest.
      
        sh
      
       ARG1 ARG2 ...
      
[root@hao ~]# ./filetest.sh? /etc/fstab /etc/fstabs
2
/etc/fstab /etc/fstabs
/etc/fstab /etc/fstabs
ok

四、撤銷變量 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

      
        
          [root@hao ~
        
      
      
        
          
            ]#
          
        
        unset NAME


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
       $NAME
      

五、查看當前shell變量 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 查看當前shell所有變量,包含環境變量和本地變量

      
        
          [root@hao ~
        
      
      
        
          
            ]#
          
        
        set

BASH
      
      =/bin/
      
        bash

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

BASH_ALIASES
      
      =
      
        ()

...
      
    

查看當前shell環境變量 printenv env 或者export

      
        
          [root@hao ~
        
      
      
        
          
            ]#
          
        
        printenv

HOSTNAME
      
      =
      
        hao

SHELL
      
      =/bin/
      
        bash

TERM
      
      =
      
        xterm

...
      
    

六、追加shell變量 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

      
        
          [root@hao ~]#
        
      
      ANIMAL=
      
        pig


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      ANIMAL=
      
        $ANIMAL:goat


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $ANIMAL

pig:goat


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $PATH


      
      /usr/lib64/qt-
      
        3.3
      
      /bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/
      
        bin


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      export PATH=$PATH:/usr/local/apache/
      
        bin


        
          
            [root@hao 
          
        
      
      
        
          ~]# 
        
      
      
        echo
      
      
         $PATH


      
      /usr/lib64/qt-
      
        3.3
      
      /bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/
      
        bin


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       export PATH=/usr/local/mysql/
      
        bin:$PATH


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $PATH


      
      /usr/local/mysql/bin:/usr/lib64/qt-
      
        3.3
      
      /bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin
    

七、第一個腳本程序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

首先創建腳本程序first.sh,腳本程序的第一行要指定程序的魔數,#!加上解釋器的路徑。然后賦予其執行權限,之后執行,執行時候要加上路徑,因為在沒有給路徑時,默認去path中去找該命令是否存在。

      
        
          [root@hao ~]#
        
      
      
        cat
      
       first.
      
        sh
      
      
        

#
      
      !/bin/
      
        bash


      
      
        ls
      
       /
      
        var


      
      
        cat
      
       /etc/
      
        inittab


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       +x first.
      
        sh
      
      
        
           [root@hao ~]#
        
      
      ./first.
      
        sh
      
      
        

account  crash    db     games  lib    lock  mail  opt       run      tmp  yp

cache     cvs    empty  gdm    local  log   nis     preserve  spool  www

# inittab is only used by upstart 
      
      
        for
      
      
         the default runlevel.

#

# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# System initialization is started by 
      
      /etc/init/
      
        rcS.conf

#

# Individual runlevels are started by 
      
      /etc/init/
      
        rc.conf

#

# Ctrl
      
      -Alt-Delete is handled by /etc/init/control-alt-
      
        delete.conf

#

# Terminal gettys are handled by 
      
      /etc/init/tty.conf and /etc/init/
      
        serial.conf,

# with configuration 
      
      
        in
      
       /etc/sysconfig/
      
        init.

#

# For information on how to 
      
      
        write
      
      
         upstart event handlers, or how

# upstart works, see init(
      
      
        5
      
      ), init(
      
        8
      
      ), and initctl(
      
        8
      
      
        ).

#

# Default runlevel. The runlevels used are:

#   
      
      
        0
      
       -
      
         halt (Do NOT set initdefault to this)

#   
      
      
        1
      
       -
      
         Single user mode

#   
      
      
        2
      
       - Multiuser, without NFS (The same as 
      
        3
      
      , 
      
        if
      
       you 
      
        do
      
      
         not have networking)

#   
      
      
        3
      
       -
      
         Full multiuser mode

#   
      
      
        4
      
       -
      
         unused

#   
      
      
        5
      
       -
      
         X11

#   
      
      
        6
      
       -
      
         reboot (Do NOT set initdefault to this)

# 


      
      
        id
      
      :
      
        5
      
      :initdefault:
    

《鳥哥的Linux私房菜》學習筆記(8)——bash腳本編程之變量


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线观看91 | 亚洲精品播放 | 夜夜春夜夜爽久久 | 婷婷综合网站 | 成年女人毛片免费视频 | 日本一级特黄aa大片24免费 | 欧美视频在线不卡 | 国产精品福利在线观看入口 | 久久免费小视频 | 久久精品网站免费观看调教 | 热久久最新视频 | 天天色综合5 | a级毛片免费完整视频 | 久久中文亚洲国产 | 国产美女a做受大片在线观看 | 色综合久久98天天综合 | 日韩在线看片中文字幕不卡 | 日韩欧美精品一区二区 | 波多野结衣精品中文字幕 | 国产福利不卡视频在免费 | 免费一级毛片在级播放 | 91最新免费地址入口 | 国内精品一区视频在线播放 | 久久国产高清 | 国产100页| 欧美激情在线视频播放 | 久久久久久久综合日本亚洲 | 国产欧美精品区一区二区三区 | 精品久久久久久久高清 | 久久亚| 婷婷激情在线 | 久精品在线观看 | 久久久一级 | 日韩精品无码一区二区三区 | 欧美成人精品第一区二区三区 | 国产欧美日韩精品专区 | 国产精品久久久久久久伊一 | 国内精品视频在线播放一区 | 久草精品视频在线观看 | 麻豆国产在线不卡一区二区 | 一本大道香蕉大vr在线吗视频 |