<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日韩精品一区二区三区| 黄页网站在线观看免费| 亚洲成A人片在线观看无码3D| 五月天婷婷精品免费视频| 亚洲欧洲一区二区三区| A国产一区二区免费入口| 亚洲精品无码久久千人斩| 久久免费高清视频| 久久精品国产亚洲AV麻豆网站 | 国内精品一级毛片免费看| 亚洲第一AV网站| 国产91色综合久久免费分享| 波多野结衣亚洲一级| 拔擦拔擦8x华人免费久久| 免费夜色污私人影院网站电影 | 丁香五月亚洲综合深深爱| 国产一级一毛免费黄片| 国产亚洲无线码一区二区| 99视频免费播放| 亚洲人成网站免费播放| 亚洲国产专区一区| 久久免费观看国产99精品| 亚洲日韩国产精品乱-久| 免费一级大黄特色大片| 13小箩利洗澡无码视频网站免费| 亚洲成电影在线观看青青| 国产男女性潮高清免费网站 | 中文字幕亚洲第一| 99re免费在线视频| 亚洲av无码一区二区三区人妖| 亚洲人成中文字幕在线观看| 青青视频观看免费99| 二级毛片免费观看全程| 亚洲成电影在线观看青青|