チャンクに分割された非常に長い文字列があります。 bashを使用して改行文字を入れずにファイルに追加したい。
例:
最初の追加
cat >> abc.sh << EOL
echo "bla bla"
ifcon
EOL
2番目の追加
cat >> abc.sh << EOL
fig -a
uname -a
EOL
そして、ファイルabc.shは次のようになります:
echo "bla bla"
ifconfig -a
uname -a
ではなく
echo "bla bla"
ifcon
fig -a
uname -a
どうすればこれを達成できますか?
<<
は常に後続の改行を含みます(空のhereドキュメントを除く)。
次のいずれかを行う必要があります。
printf %s 'echo "bla bla"
ifcon' >> file
または、cat
ではなく、末尾の改行文字を削除するコマンドを使用します。
awk '{printf "%s", l $0; l=RT}' << EOF >> file
echo "blah bla"
ifcon
EOF
(またはPerl -pe'chomp if eof'
)
または、ヒアドキュメントが一時ファイルで実装されている場合(bash
、zsh
、pdksh
、AT&T ksh
、mksh
ではなくBourne 、dash
もyash
)も、GNU/Linuxシステムでは次のように実行できます。
{
chmod u+w /dev/stdin && # only needed in bash 5+
truncate -s-1 /dev/stdin &&
cat
} << EOF >> file
echo "blah bla"
ifcon
EOF
-nスイッチでecho
を使用します。
echo -n "blah blah" >> file