ディレクトリが存在するかどうかを確認する方法は?

ディレクトリが存在するかどうかを確認する方法は?

/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

ファイルが存在する可能性があるがサイズがゼロでないことを確認したい場合:

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

stat()これらのテストはすべてシステムコールの結果に基づいています(-L依存関係を除くlstat())。ファイルへの呼び出しを実行する権限がない場合(たとえば、ファイルが存在するディレクトリやシンボリックリンクファイルの検証に参加しているディレクトリへの検索アクセス権がないため)、これらのテストは自動的に返されます。ファイルが存在しないかのように false です。

[[ ... ]]演算子であり、kshandでもサポートされています。で使用される標準対応コマンドはuseコマンドです(上記の2番目の例では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

次の理由で、スクリプトに2つのパラメータを指定する必要があります。if [ $# -eq 2 ]; then

また./bin/実際にはと同じですbin/

答え3

シェルスクリプトにディレクトリがあることを確認するには、次のコマンドを使用します。

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

反対を確認するには追加してください! -d 前 ->[ ! -d ....]

関連情報