![파일 이름 glob에서 비어 있을 수 있는 배열을 만드는 방법은 무엇입니까?](https://linux55.com/image/128430/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20glob%EC%97%90%EC%84%9C%20%EB%B9%84%EC%96%B4%20%EC%9E%88%EC%9D%84%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%B0%B0%EC%97%B4%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
그걸로 zsh
만들면 어렵지 않아요비어있을 수 있습니다(비어 있을 수도 있는) 파일 이름 glob의 결과 배열입니다. 예를 들어:
% pathlist=( /no/such/path/*(N) ); printf -- "%d\n" $#pathlist
0
bash
그러나 위 코드에 대해 제가 생각할 수 있는 가장 가까운 근사치는 glob이 null일 때 빈 배열을 생성하지 못합니다.
% pathlist=( /no/such/path/* ); printf -- "%d\n" ${#pathlist[@]} )
1
이 경우 pathlist
변수에는 "/no/such/path/*" 문자열이라는 단일 항목이 포함됩니다.
bash
각 파일 에 pathlist
하나의 항목 (그렇다면) 전 세계적으로 일치합니까?
답변1
쉘 옵션을 사용해야합니다nullglob
#!/bin/bash
shopt -s nullglob
pathlist=( /no/such/path/* ); printf -- "%d\n" "${#pathlist[@]}" )
shopt -u nullglob
Bash 매뉴얼에서는 쉘 옵션을 다음과 같이 설명합니다 nullglob
.
설정된 경우 Bash는 파일과 일치하지 않는 파일 이름 패턴이 자신이 아닌 빈 문자열로 확장되도록 허용합니다.