末尾の改行を削除せずにstdinを変数にキャプチャするにはどうすればよいですか?
シェルスクリプトで... 末尾の改行を削除せずにstdinを変数にキャプチャするにはどうすればよいですか? 今私は試しました: var=`cat` var=`tee` var=$(tee) すべての場合$varにおいて、入力ストリームの末尾の改行はありません。ありがとう。 また、入力に後続の改行がない場合、ソリューションは追加しません。 承認された回答に照らして更新: 私のコードで使用した最終的な解決策は次のとおりです。 function filter() { #do lots of sed operations #see https://github.com/gistya/expandr for full code } GIT_INPUT=`cat; echo x` FILTERED_OUTPUT=$(printf '%s' "$GIT_INPUT" | filter) FILTERED_OUTPUT=${FILTERED_OUTPUT%x} printf '%s' "$FILTERED_OUTPUT" 完全なコードを確認したい場合は、エキスパンダーのgithubページを参照してください。エキスパンダーは、情報セキュリティの目的で開発した小さなオープンソースのgitキーワード展開フィルターシェルスクリプトです。.gitattributesファイル(ブランチ固有にすることができます)およびgit configで設定されたルールに従って、git は、リポジトリにチェックインまたはチェックアウトするたびに、expandr.shシェルスクリプトを介して各ファイルをパイプ処理します。(そのため、末尾の改行またはその欠如を保持することが重要でした。)これにより、機密情報をクレンジングし、テスト、ステージング、およびライブブランチの環境固有の値の異なるセットを交換できます。