【发布时间】:2021-08-12 08:20:14
【问题描述】:
我一直在尝试使用命令行中的 libreoffice 将一堆非常旧的 MS Office 文件批量转换为 odf 格式以用于存档目的。为此,我首先将所有文件收集在一个目录中,然后在所述目录中调用以下命令(用于 doc 文件):
/path/to/soffice --headless --convert-to odt *doc
这很好用,该命令会一次性转换目录中的所有 doc 文件。但是,我想避免总是用必要的参数输入soffice 的路径,所以我在我的 Bash 配置文件中添加了以下内容:
alias libreconv='function _libreconv(){ /path/to/soffice --headless --convert-to "$1" "$2"; }; _libreconv'
但是,当我现在尝试调用以下内容时:
libreconv odt *doc
这只会导致目录中的第一个 doc 文件被转换,之后函数退出并返回提示...也许我遗漏了一些明显的东西(毕竟我是一个 cli 新手),但我确实这样做了不明白为什么当我直接运行soffice 命令时,调用该函数会导致只转换第一个文件而不是所有文件。
在此先感谢您提供的帮助,帮助我了解这里出了什么问题。 :)
【问题讨论】:
-
使用别名定义函数有什么意义????
-
@user1934428 在某些情况下可能有一些模糊的理由这样做,但在这种情况下,它可能是初学者反模式的货物崇拜副本。请参阅我在回答中链接到的问题以进行一些讨论。