2013-04-11 158 views
4

我試圖循環匹配通配符的目錄。這在命令行中工作正常。但在Shell腳本中不起作用。任何想法?shell腳本通過通配符匹配的目錄進行循環

for dirs in /var/www/html/my.domain.com/v*; do echo $dirs; done; 

上述命令列表

/var/www/html/my.domain.com/v1.0 
    /var/www/html/my.domain.com/v1.2 
    /var/www/html/my.domain.com/v2.0 

這裏是殼牌腳本版本。它不工作:

dirs=/var/www/html/my.domain.com/v* 
for dir in $dirs 
do 
    echo "$dir" 
done 

想這太:

dirs=`/var/www/html/my.domain.com/v*` #back quotes 
for dir in $dirs 
do 
    echo "$dir" 
done 
+0

該示例僅適用於我 - 沒有任何引用。你在這個劇本中的某處使用過「shopt」嗎? – hek2mgl 2013-04-11 17:08:09

+0

此外請注意,使用反引號的引用將啓動一個子shell並返回它的輸出。所以,在反引號中只有命令是有意義的 – hek2mgl 2013-04-11 17:10:00

+0

@ hek2mgl號只是一些其他的代碼。但無處使用'shopt' – 2013-04-11 17:10:21

回答

3

Glob patterns/var/www/html/my.domain.com/v*慶典功能。看起來bash不是您系統上的默認shell,因爲您使用sh script.sh啓動腳本。

確保啓動腳本使用bash:

bash script.sh 

如果你打算做直接使用chmod +x script.sh腳本可執行,確保您不會錯過在第一行使用以下shebang

#!/bin/bash