저는 채우기를 반복하고 그에 대한 일부 명령을 실행하는 간단한 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