ファイルを見つける条件

ファイルを見つける条件

ファイルを見つけてファイルが見つかったら、フルパスを変数に保存するスクリプトを作成しようとしています。現在のバージョン:

if [[ -n FOUND_PATH=$(find "$PATH" -name "file.exe") ]]; then
    echo "Found, full path: "$FOUND_PATH
else
    echo "Not found."
fi

[[ -n ]]ファイルが実際に見つからず、FOUND_PATH実際に空であっても、式はtrueと評価されます。私は何が間違っていましたか?

編集する:

現在遭遇している問題を説明するために、このコードは次のとおりです。

find "$PATH" -name "file.exe"

FOUND_PATH=$(find "$PATH" -name "file.exe")

if [[ -n "$(FOUND_PATH)" ]]; then
    echo "Found, full path: "$FOUND_PATH
else
    echo "Not found."
fi

justを返すFound, full path:ので、最初の行はまったく何も出力しませんが、後で3行目で空でない文字列であることを確認すると、空ではないと評価されます。

答え1

Bashでの割り当てはCのようないくつかの結果を提供しません。あなたはこれをしなければなりません:

FOUND_PATH=$(find "$PATH" -name "file.exe")
if [[ -n "$FOUND_PATH" ]]; then
    echo "Found, full path: $FOUND_PATH"
else
    echo "Not found."
fi

そして、$ FOUND_PATHが最初のパラメータの二重引用符の間にあることを確認してくださいecho

$ PATHが単一のディレクトリではありませんが、たとえば、/usr/bin:/bin最初の行を次のように変更できます。

FOUND_PATH=$(find $(echo "$PATH" | sed "s/:/ /g" ) -name "file.exe")

関連情報