![如何将文件的内容作为命令行参数传递](https://linux22.com/image/48685/%E5%A6%82%E4%BD%95%E5%B0%86%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AE%B9%E4%BD%9C%E4%B8%BA%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92.png)
我将文件路径存储在文件中,需要传递内容该文件作为 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