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