我过去常常运行libreoffice headless 来从bash脚本执行一些宏:
soffice --headless "$year_to_process"/"$initials".ods macro:///Standard.C69.MergeSaveClose
在我这样做之前,我需要检查宏文件c69.xba
是否存在于目录中$HOME/.config/libreoffice/4/user/basic/Standard/
。
问题是上面的数字“4”在我看来与版本有关。另一个问题是该数字与 返回的主要版本号不完全匹配libreoffice --version
,它输出:
LibreOffice 5.4.5.1 40m0(Build:1)
到目前为止我编码的是:
# check the macro .config/libreoffice/*/user/basic/Standard/c69.xba is present
[ -f $HOME/.config/libreoffice/*/user/basic/Standard/c69.xba ] || {
echo "$cmd: missing file basic/Standard/c69.xba"
exit 1
}
使用“*”来匹配任何版本,但是当出现第二个目录时.config/libreoffice/{4,5}/user/basic/Standard
,我的代码将不再起作用。
我的问题是:如何在不使用“*”的情况下(从命令行)获取包含当前版本 libreoffice 使用的宏的目录的正确路径?
从Aserre上面关于 LibreOffice 配置路径任意字符的评论开始,我选择使用命令的-t
选项选择最近创建的 LibreOffice 配置文件ls
。所以我找到了下一个可行的解决方案:
# check the macro .config/libreoffice/*/user/basic/Standard/c69.xba is present
path=$(ls -dt "$HOME"/.config/libreoffice/* | head -n1) # take only first line of output of ls -dt
[ -f "$path/user/basic/Standard/c69.xba" ] || {
echo "$cmd: missing file basic/Standard/c69.xba"
exit 1
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句