Bash 스크립트 스니펫
folder="some folder's name"
a="$folder/"*".pdf"
if [ "$a" != "$folder"'/*.pdf' ]
then
echo check
fi
인쇄하지 마십시오 check
.
이름이 폴더로 끝나는 check
파일이 하나 이상 있는 경우에만 인쇄하고 싶습니다 ..pdf
$folder
echo $a
그리고 echo "$folder"'/*.pdf'
인쇄할 것으로 예상되는 내용을 정확하게 인쇄합니다. *.pdf
지정된 폴더에 파일이 1개 이상 있으면 전자는 일치하는 경로를 인쇄하고, 그렇지 않으면 후자가 인쇄하는 내용을 인쇄합니다. 후자는 항상 연결된 지정된 이전 이름을 인쇄합니다 /*.pdf
.
- Bash는 왜 이렇게 동작합니까?
- 어떻게 작동하게 합니까?
답변1
표현식은 "$folder/"*".pdf"
가능한 모든 것으로 확장됩니다 .pdf
.
왜일까요? 이것*
로고는 특별한 의미를 유지합니다.와일드카드.
이 문자열은 "$folder"'/*.pdf'
2개의 별도 문자열 "$folder"
을 연결한 것일 뿐입니다 '/*.pdf'
.
~처럼*
작은따옴표로 묶인 기호 - it잃다그 특별한 의미.
주요 목표를 기준으로.pdf
현재 폴더에 파일이 하나 이상 있는지 확인하십시오.그리고 몇 가지 "pdf file found!"
성공적인 문구를 인쇄해 보세요:
if [ ! -z `find foldername -type f -name "*.pdf" -print -quit` ]; then
echo "pdf file found!"
fi
답변2
큰따옴표로 묶인 내용은 ( 비교 ) 를 포함하는 문자열이기 때문에 귀하의 if
명령문이 작동하지 않습니다 . 큰따옴표를 제거하면 둘 이상의 파일이 일치하면 명령문이 실패합니다.$a
*
echo "$a"
echo $a
if
don_crissti의 링크에는 훌륭한 솔루션이 있습니다.