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した方が楽だったのではと気がついてしまいました。テキストファイルなのに改行がないというのも変な話ですし。