2016-10-24 8 views
1

내 bash 스크립트에서 특정 파일을 필터링하기 위해 디렉토리의 파일과 간단한 if 문을 반복합니다. 그러나 예상대로 작동하지는 않지만 그 이유는 알 수 없습니다.Bash : if 문을 사용하여 루프

는 (나는이에 대한 루프 식 (... in "*.txt")에서 이미 파일 확장자를 필터링 할 수 알지만, 조건 내 실제 경우에는 더 복잡하다.)

이 내 코드입니다 :

#!/bin/bash 
for f in "*" 
do 
    echo $f 
    if [[ $f == *"txt" ]] 
    then 
     echo "yes" 
    else 
     echo "no" 
    fi 
done 

출력 내가 얻을 :

1001.txt 1002.txt 1003.txt files.csv 
no 

내가 기대하는 것 :

1001.txt 
yes 
1002.txt 
yes 
1003.txt 
yes 
files.csv 
no 

답변

1

스크립트에 잘 쓰지 않은 문제가 있습니다. glob에 추가로 인용 부호가 있고 echo에 따옴표가 없습니다. *

  • 인용 부호 echo $f 출력 *을 확대 할

    for f in * 
    do 
        echo "$f" 
        if [[ $f == *"txt" ]] 
        then 
         echo "yes" 
        else 
         echo "no" 
        fi 
    done 
    
    • for f in "*" 의지 루프 한 번으로 문자 f와 일치하는 모든 파일/현재 디렉토리의 디렉토리 :

      는이 방법이.
  • +1

    나는 그것이 그 것이었다라는 것을 알고 있었다. .. thanks! – Tobias

    관련 문제