나는 bash
스크립트를 가지고 있습니다 :-
for i in *.x *.y *.z *.a *.b *.c
do
echo "$i"
done
패턴과 일치하는 파일이 없는 경우 *.y
이 변수 i
의 값은 입니다 *.y
. 이런 일이 발생하면 내 논리가 엉망이 됩니다.
이런 일이 발생하지 않게 하려면 어떻게 해야 합니까?
답변1
nullglob
여기서는 그대로 두지 않고 일치하지 않는 전역 옵션을 사용하여 null로 확장하려는 경우입니다 .
shopt -s nullglob
for i in *.x *.y *.z *.a *.b *.c; do
...
done
여기서도 다음을 수행할 수 있습니다.
shopt -s nullglob
for i in *.[xyzabc]; do
...
done
한 영역만 확장하면 되므로 더욱 효율적입니다. 하지만 순서가 달라지니 참고하세요.
또는 단일 문자가 아닌 확장의 경우:
shopt -s nullglob extglob
for i in *.@(x|y|foo|bar); do
...
done
바라보다nullglob이 기본값이 아닌 이유는 무엇입니까?이에 대한 자세한 정보와 다른 쉘에 대한 대안.