ユーザーが「フォーマット文字列」を入力する必要があるRubyコマンドラインアプリケーションを作成しています(Date.strptime/strftimeの文字列によく似ています)。
コマンドの引数としてそれらを取り込んでみました。
> torque "%A\n%d\n%i, %u"
しかし、bash は実際には、入力を処理する前にすべてのバックスラッシュを入力から削除しているようです (さらに、スペースに関する多くの問題もあります)。より高度な入力オプションがいくつかありますが、バックスラッシュ "\" -> "\\" を自動的にエスケープし、代替オプションを提供しないhighline gemも試しました。
私の現在の解決策は、検索と置換を行うことです: "\\n" -> "\n". これで問題は解決しますが、ハックでひどいようにも見えます。
ユーザーに文字列をテキスト ファイルに書き込んでもらうか (ユーザーにとっては複雑)、「&&」などの他の文字を改行として扱うこともできます (ユーザーにとっては依然として複雑です)。
ユーザーがコマンドラインでエスケープ文字を入力する最良の方法は何ですか?
(更新: strptime/strftime のドキュメントを確認しました。これらの関数の書式文字列は、改行文字を "%n" に、タブを "%t" に置き換えます。したがって、今のところそれを行っていますが、他の提案はありません大歓迎です)