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