2017-07-25 74 views
0

我想將路徑名傳遞給腳本,但是我的路徑有空格(例如./Users/netto/Tunes \ Media/Music /)。 我已經嘗試將實際路徑直接放在for循環上,並且我能夠獲取所有文件。不幸的是,我無法將它作爲變量傳遞。我曾試過雙引號和單引號。這是我目前所擁有的循環遍歷路徑中的文件(帶空格)

$PATH=$1 
for f in $PATH; do 
    echo "Processing file $f " 
done 

請讓我知道如何做到這一點。 預先感謝您。

+1

'在 「$ 1」 F/*;做 回聲「處理文件$ f」; done' – anubhava

+2

幾點注意事項:1)不要使用'PATH'作爲變量名,它由系統保留。 2)對於聲明的變量,沒有'$'的正確歸因完成,即'MY_VAR = $ 1' 3)使用適當的引用:'MY_VAR =「$ 1」' – Aserre

+0

從技術上講,變量賦值並非嚴格需要引號。如[手冊](https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameters)所記錄的,在分配過程中不執行分詞和文件擴展。 –

回答

0

變量中的空格在命令級別擴展,因此爲了解決這個問題,您可以在「$ 1」(所以空格被正確轉義)或引用bash數組中使用引號。

這裏是兩個示例,應該工作:

#!/bin/bash 
DIR="$1" 
for f in "$DIR"/* 
do 
    echo "Processing file $f " 
done 

或使用bash陣列:

#!/bin/bash 
FILES=("$1"*) 
for f in "${FILES[@]}" 
do 
    echo "Processing file $f " 
done