2012-09-24 16 views
0

我對在函數中使用bash剝離URL的文件名有點困惑。這是我寫的,但我是新手,無法弄清楚我是否做得對。Bash - 我把報價放在正確的地方嗎?

function file_download() 
{ 
    filename={$1##*/} 
    tar xzf $filename 

} 

file_download "http://www.url.com/test.zip" 

我應該把報價單放在「$ 1」嗎?

+3

你爲什麼不試試呢? – fork0

+2

事實上,你犯了幾個錯誤:參數訪問應該是「$ {1 ## * /}」(你正確的剝離了前面的部分!)。您在函數($ filename)中使用全局變量。訪問它時不會引用變量(應該是「$ filename」),對於參數訪問也是如此。你不需要這個$ filename變量 – fork0

+0

'echo「$ filename」'... –

回答

2

$表達:

filename="${1##*/}" 

這會給你test.zip,符合市場預期。否則,你會得到{http://www.url.com/test.zip##*/}

1

你應該使用basename此:

filename="$(basename "$1")" 

這樣,你不要用毫無意義的空字符串結束了,如果你嘗試下載http://www.example.com/