欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 2144 0

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

????1、只能包含字母、數(shù)字和下劃線,并且不能以數(shù)字開頭,
????2、不應(yīng)該跟系統(tǒng)中已有的環(huán)境變量重名
????3、命名要有含義

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

變量名稱=值var_name=value?等號(hào)兩邊不能有空格

      
        
          [root@hao ~]#
        
      
       NAME=
      
        jerry


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        echo
      
      
         $NAME

jerry
      
    

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

1、環(huán)境變量

  腳本在執(zhí)行時(shí)會(huì)啟動(dòng)一個(gè)子shell進(jìn)程。命令行中啟動(dòng)的腳本會(huì)繼承當(dāng)前shell環(huán)境變量,也就是說環(huán)境變量的作用域?yàn)楫?dāng)前shell進(jìn)程及其子shell進(jìn)程。系統(tǒng)自動(dòng)執(zhí)行的腳本(非命令行啟動(dòng))則需要自我定義各環(huán)境變量。可以使用export設(shè)置環(huán)境變量。

      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、本地變量(局部變量)

變量一定是進(jìn)程的變量,因此在一個(gè)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,作用域:整個(gè)bash進(jìn)程。

局部變量 :local VARNAME=VALUE,作用域:當(dāng)前代碼段。

3、位置變量

 $n

例:寫一個(gè)腳本,能接受一個(gè)參數(shù)(文件路徑),判定此參數(shù)是否是一個(gè)存在的文件,如果是就顯示“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都會(huì)剔除一個(gè)參數(shù) shift n表示剔除n 個(gè)

      
        
          [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、特殊變量(系統(tǒng)變量)

用來保存某些特殊數(shù)據(jù):

  $?: 保存上一個(gè)命令的執(zhí)行狀態(tài)返回值(0-255)。0為正確,其他為錯(cuò)誤。其中1,2,127系統(tǒng)預(yù)留,其他的可以自定義。

      
        
          [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
      
    

如果只想看返回的狀態(tài)值而不想看輸出結(jié)果,則只需將輸出重定向至數(shù)據(jù)黑洞/dev/null

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


      
        2
      
    

  $#:參數(shù)的個(gè)數(shù)

  $*:參數(shù)列表

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

例:寫一個(gè)腳本,能接受一個(gè)參數(shù)(文件路徑),判定此參數(shù)是否是一個(gè)存在的文件,如果是就顯示“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
      

五、查看當(dāng)前shell變量 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 查看當(dāng)前shell所有變量,包含環(huán)境變量和本地變量

      
        
          [root@hao ~
        
      
      
        
          
            ]#
          
        
        set

BASH
      
      =/bin/
      
        bash

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

BASH_ALIASES
      
      =
      
        ()

...
      
    

查看當(dāng)前shell環(huán)境變量 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
    

七、第一個(gè)腳本程序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

首先創(chuàng)建腳本程序first.sh,腳本程序的第一行要指定程序的魔數(shù),#!加上解釋器的路徑。然后賦予其執(zhí)行權(quán)限,之后執(zhí)行,執(zhí)行時(shí)候要加上路徑,因?yàn)樵跊]有給路徑時(shí),默認(rèn)去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私房菜》學(xué)習(xí)筆記(8)——bash腳本編程之變量


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天干天天天天 | 国产一区二区丁香婷婷 | 日本最新中文字幕 | 久久国产区| 国产精品久久久久免费 | 在线播放一区二区三区 | 欧美日韩在线一区 | 日本免费网站 | 奇米视频在线观看 | 久久男人| 精品在线 | 日韩精品一区在线观看 | 日韩在线 在线播放 | 91精品国产综合久久婷婷香蕉 | 亚洲一区二区三区福利在线 | 色喜亚洲美女沟沟炮交国模 | 丝袜天堂 | 日本一区二区三区免费高清在线 | 欧美日韩亚洲一区 | av在线免费播放网站 | 欧美精品99毛片免费高清观看 | 欧美国产精品一区二区免费 | 九九热色| 亚洲 欧美 日韩 在线 | 久草www| 米奇7777狠狠狠狠视频 | 亚洲免费观看在线视频 | 亚洲国产成人精彩精品 | www国产精 | www.亚洲黄色 | 俄罗斯厕所偷窥视频 | 色接久久| 男女激情啪啪 | 九九九久久久久久久爱 | 亚洲春黄在线观看 | 日韩大片免费看 | 欧美 亚洲 一区 | 91亚洲国产成人久久精品网站 | 精品国产三级 | 奇米影视777色 | 日韩精品资源 |