PowerShellで改行せずにファイルに追記する方法
前提
GitHub ActionsでWindowsのPowerShellを使う必要がありました。まあWindows向けのrunでもbashを指定できるみたいなんですが、せっかくあんまりCIで触らないWindowsなのでネイティブシェルであるPowerShellを使ってPowerShellに親しみたいという意図がありました。
やりたいこと
ファイルに改行せず文字列を追記したい。
Linuxならば
echo -n "foo" >> bar.txt
のようにecho -nを使うだけです。
問題
PowerShellのechoはWrite-Outputのエイリアスです。これに改行しないというオプションは無いようです。
Write-Hostというコマンドレットもあり、これは-NoNewlineオプションを持っているようですが、
Write-Hostはコンソールに直接書き込むことしか出来なくて、リダイレクトは出来ません。
解決
PowerShellでのOut-Fileコマンドの使い方|各オプションもご紹介 | テックマガジン from FEnetインフラを見て解決しました。
Out-Fileコマンドレットには-NoNewlineオプションが存在するので、
Write-Output "foo"|Out-File -NoNewline -Append .\foo.txt
のように、一度リダイレクトでOut-Fileに渡してやって、
-NoNewlineを使えば良いようです。
余談
今回の場合最終的にgithub-scriptでファイルから文字列を集計しているので、 JavaScriptの方でtrimした方が楽だったのではと気がついてしまいました。テキストファイルなのに改行がないというのも変な話ですし。
hatena-bookmark