国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

第8章 替換

2019-11-08 18:22:16
字體:
來源:轉載
供稿:網友

1.     變量替換的高級形式

在變量名前面添加$可以引用變量的值。若此時變量沒有被定義或變量的值為空,則使用$符號進行變量替換會得到一個空的字符串。而Shell可以提供一些高級形式的變量替換,可以基于變量的狀態來操作變量的值。

案例:寫一個調用編輯器文本文件,并在編輯以后顯示文件內容的腳本,它接受三個命令行參數,分別是要操作的文本文件的路徑、編輯文件所用的編輯器以及顯示文本文件內容的顯示程序。

#!/bin/bash#定義腳本使用函數help(){      echo  echo "Usage:`basename $0` [ OPTION ] -f File" echo "Edit a Editable File using specified Editor and Pager." echo echo -e " -e [ Editor ]/tEditor to edit the file:vim,pico,emacs,nano..." echo -e " -p [ Pager ]/tPager to view the file:less,more,cat,head..." echo exit 1}#關閉診斷信息#OPTERR=0#處理命令行選項和參數while getopts f:e:p: OPTIONdo      case "$OPTION" in f)       #每一個選項的參數可以使用變量$OPTARG來訪問TARGET_FILE="$OPTARG";; e)       EDITOR="$OPTARG";; p)       PAGER="$OPTARG";; /?)       #當遇到未知選項時,顯示腳本的使用方法help;; esacdone      #文件參數必須被設置if [ -z "$TARGET_FILE" ]then       help   fiecho#確保文件是可讀、可寫的if [ -r "$TARGET_FILE" -a -w "$TARGET_FILE" ]then      #詢問用戶是否想編輯文件 read -p "Do you want to editing file '$TARGET_FILE' (y/n)?" if [ "$REPLY"='y' -O "$REPLY" = 'Y' -o "$REPLY"="Yes" ] then       echoecho "Opening file '$TARGET_FILE' using ${EDITOR:-vim}..."sleep 3#使用編輯器打開文件,如果變量EDITOR 為空使用vim${EDITOR:-vim} "$TARGET_FILE"echo "Thank you for editing the file." fi  echo  #詢問用戶是否想查看文件內容 read -p "Do you want to see the file just edited (y/n)?" if [ "$REPLY" = 'y' -o "$REPLY"='Y' -o "$REPLY"="Yes" ] then       echoecho "Opening the file using '${PAGER:-less}'..."sleep 3#顯示文件內容,如果變量PAGER為空就使用less${PAGER:-less} "$TARGET_FILE" fi  echo echo "Bye!" echo else       echo echo "File $TARGET_FILE can not be accessed,Please specify a Readable and Writable file." echo echo "Bye!" echo exit 1fi exit 0

 腳本有點復雜

2.     文件名替換

通過通配符來實現文件名替換,如?,*,[a-b],[^ab],[!ab]。

案例:

#!/bin/bash#臨時目錄TMPDIR=globbing#創建臨時目錄mkdir $TMPDIRcd $TMPDIR#創建一些文件來顯示通配符匹配touch a.txt b.txt c.txtcount=1while [ "$count" -le 4 ]do      touch "tmpfile.$count" let count+=1 echo "$count"doneecho#使用通配符顯示文件echo "OUTPUT from ls *:"ls *echoecho "OUTPUT from ls ?.txt"#顯示文件名以txt結束的文件ls ?.txtechoecho "OUTPUT from ls [ab]*"#顯示文件名以字母a或b起始的文件ls [ab]*echo echo "OUTPUT from ls [^ab]*"#顯示文件名不以字母a或b起始的文件ls [^ab]*echo echo "OUTPUT from ls [!ab]*"#顯示文件名不以字母a或b起始的文件ls [!ab]*echo echo "OUTPUT from tmpfile.[a-c]"#顯示文件名以字母a或b或c起始的文件ls [a-c]*echo echo "OUTPUT from tmpfile.[1-4]"#顯示文件名以數字1或2或3或4結尾的文件ls tmpfile.[1-4]#返回之前的目錄cd ->/dev/null  #清除臨時目錄echoecho "Clean up tmp dir"rm -rf $TMPDIRexit 0

shell支持如下幾種通配符:

wildcard

Description

*

匹配0或多個任意的字符

?

匹配一個任意字符

[]

匹配指定字符范圍的任意一個字符

 

注意:

  1 通配符*不會匹配隱藏的文件。

  2~/[.]bashrc和~/?bashrc及~/*bashrc都不能擴展為主目錄下的.bashrc文件,此時需要明確地寫出第一個字符是點。

3.     命令替換

命令替換:當一個命令中引用另一個命令的輸出時,就會用到命令替換。

命令替換的格式:

 $(commands)  推薦使用,可讀性和嵌套性更好

 或

 `commands`

4.     算術運算替換

通過算術運算可以計算一些算術表達式,并用計算得到的結果替換原來的表達式。

算術運算替換的格式:

 $((exPRession))

 

注意:

 1  $(())只能進行整數運算,結果中的小數部分都會忽略。

 2  let命令的算術表達式不能包含任何空格。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凉城县| 庆云县| 晋城| 双桥区| 广昌县| 黄大仙区| 上蔡县| 武城县| 泰安市| 巍山| 石楼县| 会宁县| 平凉市| 崇信县| 高清| 钟山县| 道孚县| 皮山县| 基隆市| 康保县| 沁水县| 马关县| 贵阳市| 辉县市| 揭西县| 利津县| 汝州市| 河东区| 柳河县| 板桥市| 瓮安县| 北安市| 古蔺县| 乌鲁木齐市| 通河县| 莱芜市| 于田县| 诸城市| 南川市| 赤峰市| 丽水市|