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

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

/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" ]

おすすめ記事