<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 :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
    五、位置參數
    ?
    1、位置參數及其引用
    ?
    ??? Linux可以用位置參數來定義命令行上的具體實參,例如:
    ??? $ set `pwd;ls;date`
    ??? $ echo $0 $1 $2 $3 $4 $5 $6 $11 ${11}
    ??? -bash /opt/test a bbb kkk nnn Thu /opt/test1 2009
    ?
    ??? 由上例可見:
    ??? ① $0對應的是命令名(腳本名)
    ??? ② $n對應第n個字符串(以空格隔開)
    ??? ③ $11對應的是$1再跟上"1",若需要顯示第11個參數,使用${11}
    ?
    ??? 再舉一個例子:
    ??? $ cat m1.c
    ??????? main()
    ??????? {
    ????????????printf("Begin\n");
    ????????}
    ??? $ cat m2.c
    ??? main()
    ??? {
    ??????? print("OK!\n");
    ??????? print("End!\n");
    ??? }
    ??? $ cat ex6
    ??????? # ex6:shell script to combine files and count lines
    ????????? cat $1 $2 $3 $4 $5 $6 $7 $8 $9 | wc -l
    ??????? # end
    ??? $ ./ex6 m1.c m2.c
    ????? 9
    ?
    ??? 這段代碼的意思是:依次打印ex6腳本后面帶的實參指定的文件后計算行數(最多9個)
    ?
    2、用set命令為位置參數賦值
    ?
    ??? 可以利用set命令為位置參數賦值或重新賦值,例如:
    ????$ set a b c
    ??? $ echo $0 $1 $3
    ????? -bash a c

    ??? 再舉個應用的例子:
    ??? $ cat ex7
    ??????? #!/bin/bash
    ??????? set m1.c m2.c
    ??????? cat $1 $2 $3 | wc -l
    ??? $ ./ex7
    ????? 9
    ?
    3、移動位置參數
    ?
    ??? 可以使用shift命令移動除$0外的所有參數的位置(向右順移)
    ?
    ??? $ cat ex8
    ??????? #!/bin/bash
    ??????? echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
    ??????? shift
    ??????? echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
    ??????? shift 4
    ??????? echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
    ??????? #end
    ??? $?./ex8 A B V F G T R E D S
    ????? ./ex8 A B V F G T R E D
    ???? ?./ex8 B V F G T R E D S
    ???? ?./ex8 T R E D S

    ?
    ?
    ?
    六、預先定義的特殊變量
    ?
    ??? ① $#:表示命令上上的參數個數(不包含命令本身)
    ??? ② $?:上一條命令執行后的返回值(執行成功為0 | 失敗為非0)
    ??? ③ $$:當前進程的進程號
    ??????? 注:因為每個進程都有唯一進程號,所以可以利用$$作為臨時文件的唯一文件名。
    ??? ④ $!:上一個后臺命令對應的進程號(是一個由1-5個數字構成的字符串)
    ??? ⑤ $-:當前shell設置的執行標識名
    ??????? $ set -xv
    ??????? $ echo display current shell flags $-
    ????????? display current shell flags himvxBH
    ??? ⑥ $*:列出所有的參數
    ??? ⑦ $@:基本與$*相同。區別在于:
    ??????? $ cat ex10
    ????????? #!/bin/bash
    ????????? date
    ????????? set `date`
    ????????? echo $*
    ????????? for i in "$*"
    ????????? do echo $i;
    ????????? done
    ????????? echo $@
    ????????? for i in "$@"
    ????????? do echo $i;
    ????????? done
    ????????? echo "end."
    ????????$ ./ex10
    ????????? Thu Mar?5 16:59:01 CST 2009
    ????????? Thu Mar 5 16:59:01 CST 2009
    ????????? Thu Mar 5 16:59:01 CST 2009
    ????????? Thu Mar 5 16:59:01 CST 2009
    ????????? Thu
    ????????? Mar
    ????????? 5
    ????????? 16:59:01
    ????????? CST
    ????????? 2009
    ????????? end.
    ????? 發現$@在for循環時將各個參數分解,而$*不變
    ?
    ?
    ?
    七、環境變量
    ?
    ??? 在bash、sh、ksh中可以使用env命令以及不帶參數的set命令列出所有已定義的環境變量。?
    ?
    ?1、常用環境變量 ?
    ?
    ??? ① HOME:用戶主目錄的全路徑名
    ?
    ??? 默認為:/home/userid
    ??? 可以使用 cd $HOME | cd ~ | cd 來切換回主目錄路徑。
    ?
    ??? ② LOGNAME:注冊名,由Linux自動設置
    ?
    ??? 可以通過LOGNAME變量使系統確認文件的擁有著,有權執行某個命令。
    ?
    ??? ③ MAIL:系統郵箱的地址
    ?
    ??? 默認為:/var/spool/mail/userid
    ?
    ??? ④ PATH:shell從中查找命令的目錄列表
    ?
    ??? 多個目錄以“:”分開,可以使用以下命令添加目錄:
    ??? $ PATN=$PATH:$HOME/bin
    ??? 一般用戶自身的命令存放在 /usr/local/bin 目錄下
    ?
    ??? ⑤ PS1:shell的主提示符
    ?
    ??? 默認為:\s-\v\$
    ??? 具體的參數說明如下:
    ??? \d:以“星期 月 日”形式的日期
    ??? \h:主機名,直至第一個“.”為止
    ??? \H:主機全名
    ??? \s:所用的shell名稱
    ??? \t:按24小時制形式表現的時間
    ??? \T:按12小時制形式表現的時間
    ??? \@:按12小時制am/mp形式表示的時間
    ??? \u:當前用戶名
    ??? \v:bash版本號
    ??? \w:當前工作目錄
    ??? \$:若有效UID為0,則為“#”,否則為“$”
    ?
    ??? ⑥ PWD:當前工作目錄路徑
    ?
    ??? ⑦ SHELL:當前使用的shell及解釋程序位置
    ?
    ??? ⑧ TERM:終端類型
    ?
    ??? 本機:vt100
    ?
    2、使用環境變量
    ?
    ??? 用echo命令查看任何一個環境變量
    ??? $ echo $SHELL
    ??????? /bin/bash
    ?
    ??? 注:由上可知,用“$”可以引用任何的環境變量作為變量使用
    ?
    3、刪除環境變量
    ?
    ??? $ unset NAME
    ??? 注:不要加“$”
    ?
    ?
    ?
    ?




    -The End-

    posted on 2009-01-09 21:10 decode360-3 閱讀(534) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 99亚洲男女激情在线观看| 亚洲熟妇色自偷自拍另类| 国产午夜亚洲精品不卡免下载| 曰批视频免费30分钟成人| 亚洲神级电影国语版| 67pao强力打造高清免费| 亚洲AV人无码综合在线观看| 久久大香香蕉国产免费网站| 亚洲av永久无码精品国产精品| 中文字幕日本人妻久久久免费| 亚洲av无码一区二区三区乱子伦 | 特级毛片aaaa级毛片免费| 国产中文字幕免费| h视频在线免费观看| 亚洲精品乱码久久久久久中文字幕| 久久不见久久见免费影院www日本| 亚洲综合伊人久久综合| 四虎影视成人永久免费观看视频 | 亚洲va无码va在线va天堂| 久久99青青精品免费观看| 亚洲码在线中文在线观看| 成人免费视频观看无遮挡| 美女啪啪网站又黄又免费| 国产AV无码专区亚洲AV毛网站| 少妇太爽了在线观看免费视频| 亚洲砖码砖专无区2023 | 久操视频在线免费观看| 亚洲人成电影院在线观看| 免费涩涩在线视频网| aa级女人大片喷水视频免费| 青青草原精品国产亚洲av| 永久免费毛片手机版在线看| 无码日韩人妻AV一区免费l| 亚洲图片在线观看| 国产性生交xxxxx免费| a级精品九九九大片免费看| 亚洲一区二区三区91| 亚洲 综合 国产 欧洲 丝袜| 三年片在线观看免费大全电影 | xxxxx免费视频| 最好2018中文免费视频|