디렉토리가 존재하는지 확인하는 방법은 무엇입니까?

디렉토리가 존재하는지 확인하는 방법은 무엇입니까?

/bin/x86_64/bin/lsbash 쉘 스크립트에 디렉토리가 있는지 확인하는 방법

내가 시도한 것은 다음과 같습니다.

#!/bin/bash

if [ $# -eq 2 ]; then
    if [[ "$1" = /* ]]
    then
    cd ./bin/x86_64/bin/ls
        if [ -d "$1" ]; then
            echo "ok"
            i="$1"
            echo $i
        else
            echo "error2"
            exit
        fi
    else
        echo "error"
        exit
    fi
fi

답변1

다음 명령을 사용하여 디렉터리가 있는지 확인할 수 있습니다.

if [[ -d "$1" ]]; then

사용할 파일을 확인하고 싶다면

if [[ -e "$1" || -L "$1" ]]; then

파일이 일반 파일(또는 일반 파일에 대한 심볼릭 링크)인지 확인하고 디렉터리(또는 장치, 소켓, 명명된 파이프...) 파일이 아닌지 확인하려면 다음을 사용할 수 있습니다.

if [[ -f "$1" ]]; then

파일이 존재할 수 있지만 크기가 0이 아닌지 확인하려는 경우:

if [[ -s "$1" ]] then;

stat()이러한 모든 테스트는 시스템 호출 결과를 기반으로 합니다 ( -L종속성 제외 lstat()). 파일에 대한 호출을 수행할 권한이 없는 경우(예: 파일이 있는 디렉터리 또는 심볼릭 링크 파일 확인에 참여하는 디렉터리에 대한 검색 액세스 권한이 없기 때문에) 이러한 테스트는 자동으로 반환됩니다. 파일이 존재하지 않는 것처럼 false입니다.

[[ ... ]]연산자이며 kshand에서도 지원됩니다. 에서 사용되는 표준 상응 명령은 use 명령입니다(위의 두 번째 예에서는 use ).bashzshsh[[ -e "$1" ] || [ -L "$1" ]

답변2

디렉터리가 cd존재하면 코드가 작동합니다.

cd이 줄을 내 시스템의 디렉터리로 변경했습니다(diff) .

-    cd ./bin/x86_64/bin/ls
+    cd /bin/

그런 다음 다음을 실행하십시오.

ry@~/Desktop:$ sh test /bin /
ok
/bin

다음과 같은 이유로 스크립트에 두 개의 매개변수를 제공해야 합니다.if [ $# -eq 2 ]; then

또한 ./bin/실제로는 와 동일합니다 bin/.

답변3

쉘 스크립트에 디렉토리가 있는지 확인하려면 다음 명령을 사용할 수 있습니다.

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

반대를 확인하려면 추가하세요! -d 이전 ->[ ! -d ....]

관련 정보