찾기가 존재 로컬 파일에 대한 아니라 원격 파일이나 다른 시간에 파일 작동 : 또한 배열을 사용할 수 있습니다
# Use the loop as a context for expanding the glob, not actually iterating
# over the results.
for f in $glob; do
if [[ -f "$f" ]]; then
echo found
else
echo not found
fi
break
done
: 한 가지 방법은 for
루프 조금을 남용하는 것입니다 로컬에 존재하지 않습니다. 때로는 임의로 일치하는 패턴이 있는지 확인하려고합니다. 패턴은 문자열에 있습니다.
bash는 [[ "$string" == shellmatch* ]]
및 [[ "$string" =~ ^regexmatch.* ]]
을 지원하지만 일치 매개 변수가 문자열 인 [[ "$string" == "$shellmatch" ]]
의 형식을 지원하지 않습니다. 제대로 포맷 된 새로운 쉘 스크립트를 작성하지 않고 문자열을 처리하기 위해 bash를 속이는 방법을 찾지 못했습니다. 공백이나 대괄호가 올바르게 지원되지 않을 것입니다.
에서 Rich’s sh (POSIX shell) tricks은 대부분의 POSIX 셸에서 대소 문자를 사용하거나 영리한 인용 부호 만 사용하는 하나의 라이너입니다. bash, sh와 함께 작동하도록 테스트되었습니다.zsh에서 작동하지 않는 것으로 테스트되었습니다. 나는 모든
fnmatch() { [ -z "$1" ] && return 0; case "$2" in $1) return 0 ;; esac; return 1 ; }
Examples:
fnmatch 'ab \?def' 'ab ?def' && echo 'matched' # \ supported
fnmatch 'ab ?def' 'ab cdef' && echo 'matched' # ? supported
fnmatch 'ab [cd]def' 'ab cdef' && echo 'matched' # [] supported
fnmatch 'ab {c,d}def' 'ab cdef' && echo 'matched' # case does not support brace expansion
fnmatch 'ab c*' 'ab cdef' && echo 'matched' # space supported
fnmatch 'ab) c*' 'ab) cdef' && echo 'matched' #) supported, does not interfere with case
우수에 맞게 빈 얻을 수 있도록
내가이 변형을 사용, 감사합니다. :) –