oct*_*001 6 io-redirection shell-script text-processing
我有一个很长的字符串,它被分成几块。我想将它们附加到文件中而不使用 bash 放置换行符。
示例:
首先追加
cat >> abc.sh << EOL
echo "bla bla"
ifcon
EOL
Run Code Online (Sandbox Code Playgroud)
第二次追加
cat >> abc.sh << EOL
fig -a
uname -a
EOL
Run Code Online (Sandbox Code Playgroud)
文件abc.sh应该是:
echo "bla bla"
ifconfig -a
uname -a
Run Code Online (Sandbox Code Playgroud)
并不是
echo "bla bla"
ifcon
fig -a
uname -a
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
<<始终包含尾随换行符(此处的空文档除外)。
您需要执行以下任一操作:
printf %s 'echo "bla bla"
ifcon' >> file
Run Code Online (Sandbox Code Playgroud)
或者使用删除尾随换行符的命令而不是cat:
awk '{printf "%s", l $0; l=RT}' << EOF >> file
echo "blah bla"
ifcon
EOF
Run Code Online (Sandbox Code Playgroud)
(或者perl -pe'chomp if eof')
或者,在 GNU/Linux 系统上,如果此处文档是使用临时文件(bash、zsh、pdkshAT&T ksh、 Bourne、 not mksh、dashnor yash)实现的,您可以执行以下操作:
{
chmod u+w /dev/stdin && # only needed in bash 5+
truncate -s-1 /dev/stdin &&
cat
} << EOF >> file
echo "blah bla"
ifcon
EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8473 次 |
| 最近记录: |