[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
2022-03-15 18:13:26
質問
Bashシェルスクリプトで、ディレクトリが存在するかどうかを確認するために使用できるコマンドは何ですか?
どのように解決するのですか?
シェルスクリプトでディレクトリが存在するかどうかを確認するには、次のようにします。
if [ -d "$DIRECTORY" ]; then
# Control will enter here if $DIRECTORY exists.
fi
あるいは、ディレクトリが存在しないかどうかを確認する。
if [ ! -d "$DIRECTORY" ]; then
# Control will enter here if $DIRECTORY doesn't exist.
fi
しかし ジョン・エリクソン が指摘するように、ディレクトリへのシンボリックリンクもこのチェックを通過することを考慮しないと、その後のコマンドが意図したとおりに動作しないことがあります。 例:これを実行する
ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then
rmdir "$SYMLINK"
fi
エラーメッセージが表示されます。
rmdir: failed to remove `symlink': Not a directory
そのため、シンボリックリンクは、後続のコマンドがディレクトリを想定している場合、別の方法で扱わなければならない場合があります。
if [ -d "$LINK_OR_DIR" ]; then
if [ -L "$LINK_OR_DIR" ]; then
# It is a symlink!
# Symbolic link specific commands go here.
rm "$LINK_OR_DIR"
else
# It's a directory!
# Directory command goes here.
rmdir "$LINK_OR_DIR"
fi
fi
特に、変数をダブルクォートで囲んでいることに注意してください。この理由は、8jeanが説明しています。 別の回答で .
変数にスペースやその他の特殊な文字が含まれていると、おそらくスクリプトが失敗する原因になります。
関連
-
[解決済み] Cp: ターゲットはディレクトリではありません
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] ディレクトリが存在しない場合のみmkdirする方法は?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ambiguous redirect」エラーが発生する
-
[解決済み] テスト
-
[解決済み] etc/profileでVISIBLE=NOWを設定するのはなぜですか?
-
[解決済み] Homebrewは最新ですが、`could not link` + `delete path` のエラーは気にしなくていいのでしょうか?
-
[解決済み] bashでjsonファイルを解析するためにjqの出力からダブルクオートを削除する方法は?
-
[解決済み] シンタックスエラー」が発生しました。"(" unexpected' (expecting "done") [duplicate]".
-
[解決済み] 環境変数を表示/エコーするには?
-
[解決済み] Bashでは、一重の角括弧[ ]よりも二重の角括弧[[ ]]が好ましいのでしょうか?
-
[解決済み】シェル変数に引用符で囲むのはいつ?
-
[解決済み】Bashで渡された引数がファイルかディレクトリかをチェックする。