2012-10-17 235 views
0

bash腳本防止可變迭代我有一個bash腳本中,我限定一定的路徑作爲這樣:在for循環

MY_PATH=/to/my/path

我也有一組my_path的內的目錄,並予儲存這些目錄中一個數組,因此:

DIRECTORIES="/dir1/ 
/dir2/ 
/dir3/" 

我想要做的是疊代在$ my_path的所有$目錄,所以我想這:

for dir in $MY_PATH$DIRECTORIES 
do 
    echo "Processing $dir" 
end 

然而,這提供了以下不需要輸出:

Processing /to/my/path/dir1/   #Correct! 
Processing /dir2/      #What I want: Processing /to/my/path/dir2/ 
Processing /dir3/      #What I want: Processing /to/my/path/dir3/ 

有什麼辦法來防止重複超過$ my_path的同時保留迭代超過$目錄,以便我能達到預期的輸出(見上文)?

回答

3
for dir in $DIRECTORIES; do 
    path="$MY_PATH/$dir" 
    echo "Processing $path" 
done 
+0

哦是的,杜。謝謝! – laker

2

這不是一個數組,順便說一句。使用數組是這樣的:

MY_PATH=/to/my/path 
DIRECTORIES=(dir1 dir2 dir3) 
for dir in "${DIRECTORIES[@]}"; do 
    path="$MY_PATH/$dir" 
    echo "Processing $path" 
done 

(這不是一個答案,但上面的代碼將不適合在評論:))。

0

的情況下有文件夾名稱空間

MY_PATH="/to/my/path" 

並且正在使用換行到文件夾,前

DIRECTORIES="/dir1/ 
/dir2/ 
/dir3/" 

稍微安全迴路分開禾是

OLDIFS=$IFS 
IFS=$'\n' 
for dir in $DIRECTORIES; do 
    path="$MY_PATH/$dir" 
    echo "Processing $path" 
done 
IFS=$OLDIFS