的文件权限被拒绝和不明确的重定向

问题描述:

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 
.... 

我不能发现任何错字错误。有人可以帮我弄这个吗?

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 

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)