
그걸로 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는 파일과 일치하지 않는 파일 이름 패턴이 자신이 아닌 빈 문자열로 확장되도록 허용합니다.