我将文件路径存储在文件中,需要传递内容该文件作为 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