--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 >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF