如果尚未使用 .sh 脚本打开文件,则打开它

如果尚未使用 .sh 脚本打开文件,则打开它

我得到了这个打开文件的脚本.html,但我想将其更改为仅在文件尚未打开时才打开它。
有人知道为了实现这一点需要添加哪些行吗?

#!/bin/bash
fileFragment=$"*project/html/index.html"
fullPath=$(find ../ -path $fileFragment)
xdg-open $fullPath &

编辑
我想要一个通用的解决方案,这就是为什么我把问题保持得如此简单,它与浏览器无关,而是与我使用打开的任何文件有关xdg-open,我已经通过提供此示例指定了它,我不想再为特定浏览器指定它了。
但如果没有简单的通用解决方案,那么我宁愿为我的具体情况提供一个答案,而不是没有答案:所以在我的情况下,我使用的是 Firefox。

答案1

以下解决方案仅适用于以下命令继续跑直到您关闭程序/选项卡。不幸的是,大多数 GUI 程序和 都不是这种情况xdg-open。对于 Firefox,可以获取当前打开的 URL 列表但这grep既不是通用的也不是理想的解决方案。至于测试程序是否正在运行,请参阅这个问题


您可以lockfile使用procmail包裹安装 procmail。 作为man页面有一个与您的用例完全匹配的示例,我仅引用它:

假设您想确保对文件“important”的访问是序列化的,即,不应允许多个程序或 shell 脚本访问它。为简单起见,我们假设它是一个 shell 脚本。在这种情况下,您可以像这样解决它:

...
lockfile important.lock
...             
access_"important"_to_your_hearts_content
...
rm -f important.lock
...

lockfile现在,如果所有访问“重要”的脚本都遵循此准则,您将确保最多只有一个脚本在和命令之间执行rm

默认情况下,其他每个脚本都会等待文件再次解锁,默认每八秒测试一次(例如更改lockfile -5 important.lock为五秒)。如果你只是想检查它是否被锁定,你可以使用经典test命令:

if [ -e important.lock ]; then
  # stuff to do if locked
else
  # stuff to do if not locked
fi

相关内容