2012-04-13 35 views
0
for FILE in /data/intervals/*.txt; do 
    ID=echo ${FILE} 
    /data/bin/Tool -a /data/check.txt -b ${FILE} > /data/final/Outputed_${ID} 
done 

,並提供:的文件權限被拒絕和不明確的重定向

-bash: /data/intervals/CT.BP.200.txt: Permission denied 
-bash: /data/final/Outputed_${ID}: ambiguous redirect 
-bash: /data/intervals/CT.BP.500.txt: Permission denied 
-bash: /data/final/Outputed_${ID}: ambiguous redirect 
-bash: /data/intervals/CT.BP.50.txt: Permission denied 
-bash: /data/final/Outputed_${ID}: ambiguous redirect 
.... 

我不能發現任何錯字錯誤。有人可以幫我弄這個嗎?

回答

3
ID=echo ${FILE} 

做你認爲它。它實際上將ID環境變量設置爲值echo,然後嘗試執行執行${FILE},因此權限被拒絕。

如果您想根據FILE設置ID,你需要的東西像一個:

ID=$(echo ${FILE} | sed 'some sed command here') 
ID=$(basename ${FILE}) 

,或者,如果你只是想將其設置爲FILE本身:

ID=${FILE} 

但是,這種情況下,ID可能是毫無必要的,你可以這樣做:

for FILE in /data/intervals/*.txt; do 
    /data/bin/Tool -a /data/check.txt -b ${FILE} > /data/final/Outputed_${FILE} 
done 
-1
for FILE in /data/intervals/*.txt; do /data/bin/Tool -a /data/check.txt -b ${FILE} > /data/final/Outputed_${FILE}; done 

我想你想的開/數據/間隔目錄和輸出的過程中的每一個文件的.txt做工具來定製Output_my.CT.BP.200.txt

或...你想從文件名e提取ID並在輸出中使用它?

for FILE in /data/intervals/*.txt; do IDFILE=$(echo $FILE | cut -d'.' -f3); /data/bin/Tool -a /data/check.txt -b ${FILE} > /data/final/Outputed_${IDFILE}; done 

我使用削減快速和骯髒的解決方案,你可以使用其他系統(AWK,sed的,PERL)