在 bash 中循环直到文件存在

在 bash 中循环直到文件存在

我想wait在 bash 中写入直到文件存在。我该怎么做?

我尝试了这个但是没有用:

while [ ! -f outputs\/$trace\_hist_len_$hist_len\_page_size_$page_size\.out]; do
echo "waiting for outputs\/$trace\_hist_len_$hist_len\_page_size_$page_size\.out";
done

好像有一个语法错误。

答案1

当:;做
    [[ -f "/path/to/file" ]] && 中断
    echo“暂停直到文件存在。”
    睡眠 1
完毕

如果不使用类似的东西inotify,这大概就是你能做的事情的极限了。

上面的循环while只是用作:条件,这几乎意味着“一直这样做直到我们杀死它”。

重要的一行是[[测试。这里的测试条件不使用if语句。这是因为[[是实际命令,不是语句的一部分if。这将执行[[ -f "/path/to/file" ]]&&检查命令的退出状态[[,如果退出状态为(成功),则执行以下语句0。以下语句break将关闭脚本所在的当前循环。

注意:bash强烈建议您使用[[而不是[。 它具有 的所有功能,[但功能更强大且更易于使用。

答案2

文件参数和右括号之间的空格很重要。

if [ -f "path" ]; then echo good;fi

if [-f "path"] ; then  echo bad;fi
if [ -f "path"]; then  echo bad;fi
if [-f "path" ]; then  echo bad;fi

相关内容