查找文件的条件

查找文件的条件

我正在尝试编写一个脚本来查找文件,如果找到,则将完整路径保存到变量。当前版本:

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:,因此第一行根本不输出任何内容,但是当稍后在第三行中检查它是否为非空字符串时,它的计算结果为非空!

答案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")

相关内容