<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    Linux shell程序設計(五).變量-3
    ?
    ??? OK,變量問題的最后掃尾,包括了與變量相關的一些知識,不過也是重要的。
    ?
    ?
    八、環境文件
    ?
    ??? bash的環境文件包括:.bash_profile文件、.bashrc文件、.bash_logout文件等
    ?
    ??? .bash_profile:設置化境變量和文件掩碼(umask),注冊后執行
    ??? .bashrc:只含有針對bash的腳本,可以用來設置別名,在.bash_profile之后執行
    ??? .bash_logout:退出注冊是執行,例如清屏等操作
    ?
    ??? 注:若是C shell,則相應文件為.login
    ?
    ?
    九、export語句與環境設置
    ?
    1、export語句
    ?
    ??? 在腳本或命令行中定義的變量(包括環境變量),僅在同一shell下有效,例如:
    ??? $ string="XXXX"
    ??? $ cat ex11
    ??????? echo "the name is $string"
    ??? $ ./ex11
    ??????? the name is
    ??? $ echo $string
    ??????? the name is XXXX
    ??? 可以看到,上面的例子中,定義的string變量僅在當前的shell下有效,而在ex11環境下為空。
    ?
    ??? export命令的作用就是將私有的變量export到轉出區
    ??? export [變量名]
    ?
    ??? 例如:
    ??? $ name="AAA"
    ??? $ export name
    ??? $ cat ex12
    ??????? name="BBB"
    ??????? echo "His name is $name"
    ??????? ex13
    ??? $ cat ex13
    ??????? echo "Her name is $name"
    ??? $ ./ex12
    ??????? His name is BBB
    ??????? Her name is AAA
    ?
    ??? 注:export在同一命令行中可以對應多個變量,例如:
    ??? $ export TERM PATH SHELL HOME
    ?
    2、環境變量的設置和顯示
    ?
    ??? 直接設置變量的形式為: [變量名]=值
    ??? 注意:如果含有空格等特殊字符,用""括起來
    ?
    ??? 可以使用不帶參數的export命令顯示本進程利用export命令所輸出的全部變量
    ??? $ export
    ??????? declare -x HOME="/home/oracle"
    ??????? declare -x HOSTNAME="localhost.localdomain"
    ??????? declare -x INPUTRC="/etc/inputrc"
    ??????? declare -x LANG="en_US.UTF-8"
    ??????? declare -x PWD="/home/oracle"
    ??????? declare -x SHELL="/bin/bash"
    ??????? declare -x SHLVL="2"
    ??????? declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
    ??????? declare -x SSH_CLIENT="::ffff:192.168.63.1 1474 22"
    ??????? declare -x SSH_CONNECTION="::ffff:192.168.63.1 1474 ::ffff:192.168.63.3 22"
    ??????? declare -x SSH_TTY="/dev/pts/1"
    ??????? declare -x TERM="vt100"
    ??????? ... ...
    ??? 也可以使用env命令列出所有的化境變量(包括本進程和以前進程所輸出的變量)
    ??? $ env
    ??????? MAIL=/var/spool/mail/root
    ??????? PWD=/home/oracle
    ??????? INPUTRC=/etc/inputrc
    ??????? LANG=en_US.UTF-8
    ??????? SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
    ??????? HOME=/home/oracle
    ??????? SHLVL=2
    ??????? LOGNAME=oracle
    ??????? SSH_CONNECTION=::ffff:192.168.63.1 1474 ::ffff:192.168.63.3 22
    ??????? LESSOPEN=|/usr/bin/lesspipe.sh %s
    ??????? G_BROKEN_FILENAMES=1
    ??????? OLDPWD=/root
    ??????? ... ...
    ?
    3、set命令
    ?
    ??? set命令的功能有三個:
    ?
    ??? ① 顯示迄今為止所有定義的變量,包括局部變量和公用變量
    ??? ② 設定位置參數的值
    ??? ③ 改變執行shell腳本時的選項設定
    ?
    ??? 功能①即使用不帶參數的set命令
    ??? 功能②見上文
    ??? 功能③說明如下:
    ?
    ??? 設置標志:set -標志
    ??? 關閉標志:set +標志
    ?
    ??? 標志說明:
    ?
    ??? -x:命令打印,并在前面加“+”
    ??? -v:所有命令均打印出來
    ??? -a:對被修改、創建的變量自動標記,表明要被export到后繼名命令的環境中
    ??? -e:命令以非0狀態終止時退出shell(循環/if語句除外)
    ??? -f:禁止路徑名擴展
    ??? -h:記住命令位置,便于查找(默認打開)
    ??? -k:把全部以賦值語句形式出現的參數放在命令的環境中
    ??? -n:讀命令,但不執行???
    ?
    ?
    十、參數置換變量
    ?
    ??? 參數置換變量是另一種為參數復制的方式,形式為:
    ??? [變量2]=${[變量1]op[字符串]}?? op in [ :- | := | :+ | :? ]
    ?
    ??? 注:op兩邊不能有空格
    ?
    1、[變量2]=${[變量1]:-[字符串]}
    ?
    ??? 如果[變量1]為空,則[變量2]=[字符串],[變量1]不變;否則[變量2]=[變量1],[變量1]不變
    ?
    ??? 舉例:
    ??? $ cat ex15
    ??????? echo -n "Please enter TERM1(default is ansi)->"
    ??????? read terminal
    ??????? TERM1=${ terminal:-ansi }
    ??????? echo "terminal type is $TERM1 now."
    ??????? echo "terminal=$terminal"
    ??? $ ./ex15
    ??????? Please enter TERM1(default is ansi)->(按Enter鍵)
    ??????? terminal type is ansi now.
    ??????? terminal=
    ??? $ ./ex15
    ??????? Please enter TERM1(default is ansi)->(vt100 按Enter鍵)
    ??????? terminal type is vt100 now.
    ??????? terminal=vt100
    ?
    2、[變量2]=${[變量1]:=[字符串]}
    ?
    ??? 如果[變量1]為空,則[變量2]=[字符串],[變量1]=[字符串];否則[變量2]=[變量1],[變量1]不變
    ?
    ??? 舉例:
    ??? $ cat ex16
    ??????? echo -n "Please enter TERM2(default is ansi)->"
    ??????? read terminal
    ??????? TERM2=${ terminal:=ansi }
    ??????? echo "TERM2=${TERMS2}***terminal=$terminal"
    ??? $ ./ex16
    ??????? Please enter TERM2(default is ansi)->(按Enter鍵)
    ??????? TERM2=ansi***terminal=ansi
    ??? $ ./ex16
    ??????? Please enter TERM2(default is ansi)->(vt100 按Enter鍵)
    ??????? TERM2=vt100***terminal=vt100
    ?
    3、[變量2]=${[變量1]:+[字符串]}
    ?
    ??? 如果[變量1]為空,則[變量2]為空,[變量1]不變;否則[變量2]=[字符串],[變量1]不變
    ?
    ??? 舉例:
    ??? $ cat ex17
    ??????? echo -n "Please enter TERM3(default is ansi)->"
    ??????? read terminal
    ??????? TERM3=${ terminal:+ansi }
    ??????? echo "TERM3=${TERMS3}!!!terminal=$terminal"
    ??? $ ./ex17
    ??????? Please enter TERM3(default is ansi)->(按Enter鍵)
    ??????? TERM3=!!!terminal=
    ??? $ ./ex17
    ??????? Please enter TERM3(default is ansi)->(vt100 按Enter鍵)
    ??????? TERM3=ansi!!!terminal=vt100
    ?
    4、[變量2]=${[變量1]:?[字符串]}
    ?
    ??? 如果[變量1]為空,則輸出 “[shell腳本名]:[變量1]:[字符串]”;否則[變量2]=[變量1],[變量1]不變
    ?
    ??? 舉例:
    ??? $ cat ex18
    ??????? echo -n "Please enter TERM4(default is ansi)->"
    ??????? read terminal
    ??????? TERM4=${ terminal:+ansi }
    ??????? echo "TERM4=${TERMS4}\$\$\$terminal=$terminal"
    ??? $ ./ex18
    ??????? Please enter TERM4(default is ansi)->(按Enter鍵)
    ??????? ex18:terminal:ansi
    ??? $ ./ex18
    ??????? Please enter TERM3(default is ansi)->(vt100 按Enter鍵)
    ??????? TERM3=ansi$$$terminal=vt100
    ?
    ??? 注:顯示的[變量1]是其名稱,而不是它的值。
    ?
    ?
    posted on 2009-01-10 23:14 decode360 閱讀(230) 評論(0)  編輯  收藏 所屬分類: 03.Linux
    主站蜘蛛池模板: 亚洲国产成人a精品不卡在线| 毛片免费观看网站| 精品无码AV无码免费专区| 美女视频黄免费亚洲| 日本久久久免费高清| 亚洲精品国产精品乱码不99| 91大神亚洲影视在线| 美女被暴羞羞免费视频| A级毛片高清免费视频在线播放| 希望影院高清免费观看视频| 日本牲交大片免费观看| 久久久久久a亚洲欧洲AV| 国产精品亚洲片在线va| 久久一区二区免费播放| 国产在线a免费观看| 亚洲日本乱码在线观看| 亚洲精品天堂无码中文字幕| 中文字幕免费在线看线人动作大片 | 处破痛哭A√18成年片免费| 三上悠亚亚洲一区高清| 亚洲gay片在线gv网站| 91香焦国产线观看看免费| 久久久久久久亚洲精品| 亚洲av无码专区亚洲av不卡| 亚洲精品视频在线观看免费| 中文字幕亚洲一区二区三区| 女bbbbxxxx另类亚洲| 啦啦啦中文在线观看电视剧免费版| 久久精品国产亚洲AV麻豆王友容| 国产亚洲欧美在线观看| 成人一a毛片免费视频| 亚洲国产精品一区二区久| 亚洲综合激情视频| 成全在线观看免费观看大全 | 一本一道dvd在线观看免费视频| 日本不卡在线观看免费v| 亚洲熟妇久久精品| 午夜一区二区免费视频| 亚洲国产精品成人综合色在线| 成人免费午夜在线观看| 亚洲欧美日韩综合俺去了|