bash: FOR 루프 내부에 키월드가 있는 IF 조건

bash: FOR 루프 내부에 키월드가 있는 IF 조건

저는 채우기를 반복하고 그에 대한 일부 명령을 실행하는 간단한 for 루프를 작업 중입니다. "AllBoxes" 키워드로 시작하는 파일만 고려하려면 IF 문을 사용하여 필터를 설정해야 합니다.

  for pdb in "${storage}"/"${experiment}"/*.pdb ; do
    pdb_name=$(basename "$pdb" .pdb)
    # if file starts with pharase AllBoxes do something on the file
    if [[ ${pdb_name} =='AllBoxes*' ]] ; then
    echo Vizualisation of ${pdb_name} is being processed!
    fi
    done

이로 인해 IF 문에 오류가 발생합니다.

또한 나머지 패딩을 모두 건너뛰는 것만으로도 충분합니까("AllBoxes" 키 세계로 시작하지 않음)? 루프를 종료하려면 Else 또는 Elif Break와 같은 기능을 도입해야 합니까?

답변1

그 뒤에 공백이 필요하기 때문에 오류가 발생한 것일 수 있지만 ==확장 테스트에서는 유사한 와일드카드를 사용할 수 없습니다. =~정규식 일치(유사 )를 사용할 수 있지만 AllBoxes.*인용하면 문자 그대로 처리됩니다. AllBoxes파일 에만 관심이 있다면 루프를 다음과 같이 수정할 수 있습니다.

for pdb in "${storage}/${experiment}"/AllBoxes*.pdb ; do

관련 정보