"ant"로 시작하는 파일이 디렉토리에 존재하는지 테스트해야 합니다. 파일이 있으면 삭제해야 합니다. 지금 제가 사용하고 있는 명령어는
test -e $FILE_PATH/$FILE_NAME
나는 정의했다
FILE_NAME="ant"
FILE_NAME 뒤에 *를 추가하면 작동하지 않습니다.
답변1
그러한 파일이 하나만 존재하는 경우 이를 삭제할 수 있는 이식 가능한 방법이 있습니다.
set -- "${FILE_PATH}/${FILE_NAME}"*
[ $# -eq 1 -a -e "$1" ] && rm -- "$1"
내가 보기에는 "ant" 파일이 얼마나 많이 존재하는지 상관하지 않지만 작업이 끝나면 해당 파일(모두)이 사라지도록 하려면 다음을 수행하십시오.
rm -f "${FILE_PATH}/${FILE_NAME}"*
- 이 방법으로 해당 파일이 없으면 rm은 (강제적으로 조용하게) 아무 작업도 수행하지 않지만 해당 파일이 (1개 이상!) 있으면 rm
삭제됩니다.
답변2
이를 수행하는 또 다른 방법은 다음과 같습니다.
-sh-4.1$ dir=$(pwd) ; filename="ant"
if (( $(shopt -s nullglob; set -- ${dir}/${filename}*; echo $#) > 0 )); then rm
${dir}/${filename}* ; fi
shopt -s nullglob
: 디렉터리가 비어 있으면 주석이 반환되도록 합니다.
set -- ${dir}/${filename}* :
위치 매개변수를 설정합니다.
$#
: 위치 매개변수의 개수를 반환합니다. rm 실행 조건
선형으로서:
1$ dir=$(pwd) ; filename="ant" ; if (( $(shopt -s nullglob; set -- ${dir}/${filename}*; echo $#) > 0 )); then rm ${dir}/${filename}* ; fi