酷!學園

技術討論區 => 程式討論版 => 主題作者是: vantien 於 2002-04-10 23:15

主題: 請問關於 shell script
作者: vantien2002-04-10 23:15
請問一下大大,在你的 shell script 教學中介紹的
${VAR##*/}
${VAR%%.*}
可以去掉頭或尾字串,但有沒有辦法可以同時去掉呢?
小弟試了
${VAR##*/%%.*}
${${VAR##*/}%%.*}
也都不行,還是只能分二次處理.

謝謝!
主題: 請問關於 shell script
作者: 2002-06-07 12:20
我不知道Bash下有否更好的做法
更複雜的處理大概得利用檔案透過sed, awk處理

這是我的兩階段式解法:
var2=${var1##*/};echo ${var2$%%.*}
主題: 請問關於 shell script
作者: kenny2002-06-07 12:45
引述: "任俠"
我不知道Bash下有否更好的做法
更複雜的處理大概得利用檔案透過sed, awk處理

這是我的兩階段式解法:
var2=${var1##*/};echo ${var2$%%.*}


上面的命令或許要加個 back quote 或 $() 才行﹐例如﹕

var2=$(${var1##*/};echo ${var2$%%.*})

更正﹕

啊﹗抱歉﹐重新看一次﹐原來是我自己看錯了﹗耍寶﹐真不好意思~~~  :p
主題: Bash下的變數代換
作者: 2002-06-07 13:06
剛查了一下man bash  (mdk8.1下)
找到

${parameter:-word}
${parameter:=word}
${parameter:?word}
${parameter:+word}
${parameter:offset}  從offset取得子字串 例如:echo ${var:12}
${parameter:offset:length}          同上  echo ${var:5:13}
                                      對@及*開頭的變數則是取得子集
${!prefix*}        ???!!!沒試出來,知道的人告訴我啦!
${#parameter}   傳回字元數或*及@開頭的變數的成員數
   
${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
${parameter/pattern/string}         搜尋代換一次
${parameter//pattern/string}           搜尋代換到底

紅色是我2nd Edtion Linux in a nutshell中找不到的部份
而且@及*開頭的變數也是新版Bash才有支援
不看man bash真的很可惜

http://www.study-area.org/linux/system/linux_shell.htm
netman大哥也早提到了說,啊!又沒看到! :-?
主題: 請問關於 shell script
作者: duncanlo2002-06-07 13:30
好像有本shell programming,
不知道值不值的買,因為很多script,
用shell script就可以作到了...
主題: 請問關於 shell script
作者: 2002-06-08 22:13
今天去天瓏查了一下第三版的 Linux in a nutshell 是2000年出的,
還是查不到完整的說明。duncanlo兄說的不知是那一本說。

簡單說出版的速度根本與線上資料更新的速度差很多。

如果是看譯本,那當然要看被翻譯的那本書是否夠新囉!

目前線上的 man bash 有沒有人把它完整中譯的?要從頭查字典到尾
不如轉成文本翻譯一次,再對照著改,但是轉出文本的格式控制碼,可以一次消它乾淨又不傷內容嗎?在vi 怎麼代法完整。