5

我在我的 bash 脚本中使用 find 命令,就像这样

for x in `find ${1} .....`;
do
    ...
done

但是,如何处理脚本的输入是不存在的文件/目录的情况?(即我想在发生这种情况时打印一条消息)

我尝试使用 -d 和 -f,但我遇到问题的情况是 ${1} 是“。” 或者 ”..”

当输入不存在时,它不会进入我的 for 循环。

谢谢!

4

4 回答 4

2

Bash 为您提供了开箱即用的功能:

if [ ! -f ${1} ];
then
    echo "File/Directory does not exist!"
else
    # execute your find...
fi
于 2013-01-23T03:59:45.493 回答
0

Bash 脚本有点奇怪。实施前练习。但是这个网站似乎很好地分解了它。

如果该文件存在,这有效:

if [ -e "${1}" ]
then
  echo "${1} file exists."
fi

如果该文件不存在,则此方法有效。注意“!” 表示“不”:

if [ ! -e "${1}" ]
then
  echo "${1} file doesn't exist."
fi
于 2013-01-23T03:56:16.937 回答
0

将查找分配给变量并针对该变量进行测试。

files=`find ${1} .....`
if [[ "$files" != “file or directory does not exist” ]]; then
  ...
fi
于 2013-01-23T03:59:06.883 回答
0

你可以尝试这样的事情:

y=`find . -name "${1}"`
if [ "$y" != "" ]; then
  for x in $y; do
    echo "found $x"
  done
else
  echo "No files/directories found!"
fi
于 2013-01-23T04:07:02.167 回答