命令行中libreoffice配置文件的路径

时间:2018-03-07 10:28:58

标签: bash libreoffice

我用 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使用的宏的目录的正确路径,而不使用'*'?

1 个答案:

答案 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
}