Bash 对于文件,权限被拒绝&;模糊重定向
给予:Bash 对于文件,权限被拒绝&;模糊重定向,bash,Bash,给予: 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/Outp
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
,则需要以下内容之一:
ID=echo ${FILE}
或者,如果您只想将其设置为文件
本身:
ID=$(echo ${FILE} | sed 'some sed command here')
ID=$(basename ${FILE})
但是,在这种情况下,ID
可能是不必要的,您可以执行以下操作:
ID=${FILE}
我想您应该为/data/interval目录下的每个文件.txt使用这个工具,并将您的进程输出到一个自定义的输出文件中
或者。。。是否要从文件名e中提取ID并在输出时使用它
for FILE in /data/intervals/*.txt; do /data/bin/Tool -a /data/check.txt -b ${FILE} > /data/final/Outputed_${FILE}; done
我正在使用cut快速而肮脏的解决方案,您可以使用其他系统(awk、sed、perl)
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 IDFILE=$(echo $FILE | cut -d'.' -f3); /data/bin/Tool -a /data/check.txt -b ${FILE} > /data/final/Outputed_${IDFILE}; done