
/var/some-dir/*
반환된 항목이 있는지 확인하는 방법은 무엇입니까 ?
사용 find /var/some-dir/* ...
하지만 패턴이 비어 있으면 오류가 발생합니다. 리디렉션하고 싶지 않습니다 stderr
.
실행하기 전에 find
패턴이 무엇이든 반환하거나 오류를 반환하는지 확인하고 싶습니다.
답변1
반환 값을 처리할 수 있어야 합니다.
find
이 방법으로 사용할 때 아무것도 발견되지 않으면 반환되므로 다음을 1
수행할 수 있습니다.
find /var/some-dir/*
if [[ $? -eq 1 ]]
then
perform_failure_action
fi
미리 확인하고 싶으시다면, 다음을 시도해 볼 수 있습니다.
shopt -s nullglob
f=/var/some-dir/*
if [ -z $f ]
then
printf -- "No such file!\n"
else
find /var/some-dir/*
fi
이 shopt
줄은 glob 패턴과 일치하는 파일이 없는 경우 빈 문자열로 확장되어 전달될 수 있도록 보장합니다 -z
.
이 경우에는 반드시아니요$f
당신의 말을 인용해 보세요생각하다이번 테스트에서는 글로벌 확장이 이루어졌습니다. 같은 이유로 연산자를 테스트하려면 단일 괄호를 사용해야 합니다.아니요이중 괄호 연산자는 측정된 변수에 대한 자체 "보호" 체계를 구현할 수 있습니다.
또는, 이를 지원하는 쉘(예: Bash)을 사용하는 경우 compgen
해당 -G
옵션과 함께 내장 명령을 사용할 수 있습니다. 그러면 제공된 glob 패턴( )에 대한 완성 목록이 생성되고 -G
일치하는 경우 반환됩니다.true
if compgen -G /var/some-dir/*
then
find /var/some-dir/*
else
printf -- "No such file!\n"
fi