大多数接受--foo
为选项的命令--
本身也接受为“选项的结尾,参数的开头”标记-因此您可以执行以下操作:
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
但是,对于您的确切示例的更具体的答案是,printf的第一个参数是格式说明符,并且由于不使用printf的格式化功能,这使事情变得更加困难。这将是做您想要的更好的方法:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
这告诉printf接受它获取的每个参数并打印它,然后换行。这比重复\n
自己要容易,而且可以避免--
您面临的主要问题。而且,它消除了逃脱%
字符串可能包含的任何符号的需要。
至于如何使用echo
,则可以使用:
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
或者,更便携:
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
或与cat一起使用here-doc:
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF