2012-04-13 5 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}을 실행하려고 시도하므로 사용 권한이 거부되었습니다. 에,

ID=${FILE} 

그러나 : 당신이 FILE에 따라 ID을 설정하려면

, 당신은 하나 같은 필요

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

또는, 당신은 그냥 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 

난 당신을 ... 당신이

또는 Output_my.CT.BP.200.txt 사용자 정의에/데이터/간격 디렉토리 및 출력 프로세스의 모든 파일이 .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, 나오지도, 펄)

을 사용할 수 있습니다
관련 문제