我用 libreoffice 无头地从 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使用的宏的目录的正确路径,而不使用'*'?
答案 0 :(得分:0)
从上面关于LibreOffice配置路径的任意字符Aserre的注释开始,我选择使用-t
选项ls
选择最近创建的LibreOffice配置文件。 {1}}命令。所以我找到了下一个解决方案:
# 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
}