如何将文件的内容作为命令行参数传递

如何将文件的内容作为命令行参数传递

我将文件路径存储在文件中,需要传递内容该文件作为 shell 脚本的参数,特别是 Maven,如下所示:

mvn -Dvar_name=(contents of file)

这行得通吗:

mvn -Dvar_name=(cat /path/to/file)

答案1

这可以使用命令替换来完成,如下所示:

mvn -Dvar_name="$(cat /path/to/file)" # POSIX
mvn -Dvar_name="$(</path/to/file)"    # bash

但这有一个值得注意的警告:所有尾随换行符都被删除。不过,如果这并不重要,那么这应该可行。

如果你真的只想读一行,你可以使用read,如下所示:

IFS= read -r line < /path/to/file
mvn -Dvar_name="$line"

答案2

对于命令替换,您需要使用$()或反引号``。

引用替换也很重要,否则如果文件包含多个单词,它将扩展为多个参数。这里有些例子:

mvn -Dvar_name="$(< /path/to/file)" # bash

mvn -Dvar_name="$(cat /path/to/file)" # POSIX

相关内容