next up previous contents
Next: 環境變數 Up: 變數函數與模組化寫作 Previous: 引號quote   Contents

中括號的變數取代

加上括號{}是parameter的方法, ${var}是比較好的寫法,如果沒有要加其他字串可以用$var就好。 小心空格是有差的,他不像其他程式寫作,多空一個與少空一格是有差的。 其他變數一些用法: 請看一個例子
      # remote shell $RSH會等於/usr/bin/rsh  如果RSH當初沒有給值
      RSH=${RSH:-/usr/bin/rsh}

      # :+ 這種方式用在可有可無的option很好用
      # 以下面這個副程式為例子
      # 如果傳參數給他則VAR變成"-o 參數",沒有參數則VAR沒有值
      # $1 是第一個傳進來的參數  如果有值VAR就用"-o $1"
      func()
      {
          VAR=${1:+" -o $1"}
      }

      # :% 這種可以用在擷取字串的某部份
      # 例如  find 或者有的命令取回的結果往往是絕對路徑名
      # 但我們只想要最後面的那個檔案名時可以用這個來擷取
      # 不過傳統的bourne shell沒有% # pattern match,這只有在
      # ksh bash才有 最好不要用改用sed比較保險一點

      PRIV_HOST=fermion-priv
      PUB_HOST=${PRIV_HOST:%-priv}
      echo $PUB_HOST
      (PUB_HOST會等於fermion)

      # 代換也是  在新的Korn shell與Bourne Again Shell上才有
      
      BLOCK_DEVICE=/dev/vx/dsk/oracledg/vol_0
      RAW_DEVICE=${BLOCK_DEVICE/dsk/rdsk}



Cyril Huang 2002-06-14