既存のディレクトリのテストが存在しないディレクトリのテストに合格します。

既存のディレクトリのテストが存在しないディレクトリのテストに合格します。

行動

ユーザープロファイルに環境変数を設定しました。

export DATADIR=<absolute path set with `readlink -e target`>

予想される結果

構成ファイルを再インポートし、ターゲットに接続されていることを確認します。

echo ${DATADIR}; ls ${DATADIR}

これはパスです。私がテストしてみると

test -d ${DATADIR} && echo yes || echo no

これは合格すると予想されるそして(結果は「ある」)

予期しない結果

しかし、歪んだ名前など、まったく定義されていない別のディレクトリ名を指定すると、テストは

test -d ${HJIWEODSB} && echo yes || echo no

私にもそうだと答えてください、それは予期しないパス、この名前はファイルでもディレクトリでもないからです。

期待した結果を再び達成

実際に

test -d  && echo yes || echo no

「はい」と言えば次から始まると思います。ls

質問

テストのためにマニュアルページとこのページを見ました。ライフライン。たぶん私は彼らについて見落としているのかもしれません。要約すると、ディレクトリが存在するかどうかの信頼できるテストが必要です。修正とアドバイスを歓迎します。


もちろん、反対投票をしてもいいです。しかし、これが役に立たない、不明である、または研究努力がないことを示す理由についての提案は感謝します。

答え1

実際、この記事を書いたおかげで答えを見つけました。

期待される結果を得るには、変数名を引用符で囲みます。

test -d "${DATADIR}" && echo yes || echo no

与えられた一方

test -d "${GIBBERISH}" && echo yes || echo no

いいえ。

(メタコメント:将来の読者が支援を受ける可能性があるため、私の質問を削除しないことにしました。

関連情報