的文件权限被拒绝和不明确的重定向
问题描述:
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)