$1
일자리를 얻었는데 그것이 파일인지, 특수 파일인지, 폴더인지 테스트해야 합니다.사례 $1
진술서.
몇 가지를 시도했지만 제대로 작동하지 못했습니다. 이것을 구현하는 방법에 대한 아이디어가 있습니까(in Case 문)
내가 달성해야 할 것은 다음과 같습니다.
if [ -f $1 ]
then
exit 1
elif [ -d $1 ]
then
exit 2
elif [ -c $1 -o -b $1 ]
then
exit 3
else
exit 0
fi
나는 최종 코드를 요구하는 것이 아니라 다음 작업을 수행하는 방법을 요구하는 것입니다.
Case $1 in
-d) ...
답변1
if
귀하가 게시한 - 기반 코드는 충분히 단순해 보이기 때문에 구문을 사용하기 위한 요구 사항이 case
약간 이상합니다. 다음을 제공하는 파일 형식 정보를 검색할 수 있을 것 같습니다 ls -l
.
case "$(ls -ld -- "$1")" in
-*) echo 'Regular file' ;;
d*) echo 'Directory' ;;
*) echo 'other' ;;
esac
답변2
제가 선택한 솔루션은 다음과 같습니다.
filetype=$(stat -c%F "$1")
exitcode=$?
if [ $exitcode -eq 0 ]
then
case "$filetype" in
"regular file") exit 1;;
"directory") exit 2;;
*) exit 3;;
esac
else
exit 0
fi
통계가 실패하면(파일이 존재하지 않음) 여전히 오류가 표시되지만 정상적으로 작동합니다. 감사해요