La plupart des commandes qui acceptent --foo
comme option acceptent également --
en tant que marqueur "fin des options, début des arguments" - vous pouvez donc faire:
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Mais la réponse plus spécifique à votre exemple exact est que le premier argument de printf est un spécificateur de format, et vous rendez les choses plus difficiles que nécessaire en n'utilisant pas printf pour ses capacités de formatage. Ce serait une meilleure façon de faire ce que vous voulez:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
Cela indique à printf de prendre chaque argument qu'il obtient et de l'imprimer, suivi d'une nouvelle ligne. Plus facile que de répéter \n
vous - même, et cela évite le principal --
problème auquel vous faisiez face. Et il supprime le besoin d'échapper à tout %
signe que vos cordes pourraient contenir.
Quant à la façon de faire plusieurs lignes avec echo
, vous pouvez utiliser:
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Ou, bien plus facilement:
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
Ou en utilisant cat avec un here-doc:
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF