如何从控制台读取多行文本,然后将内容保存到带有换行符的文件中?

Posted

技术标签:

【中文标题】如何从控制台读取多行文本,然后将内容保存到带有换行符的文件中?【英文标题】:How to read multiple line of text from console and then save the content to a file with line break? 【发布时间】:2021-10-24 13:03:16 【问题描述】:

由于用户不知道如何使用vi,我需要创建一个解决方案,让用户使用复制和粘贴的方式在AIX服务器中创建文件。

我参考以下链接中的解决方案:

How to read multi-line input in a Bash script?

我创建一个脚本如下:

#!/bin/bash
echo "Paste the Bulletin:"
IFS= read -d '' -n 1 keyvariable   
while IFS= read -d '' -n 1 -t 2 c
do
    keyvariable+="$c"$'\n'
done
echo $keyvariable >abc.txt
echo "Thanks!" 

输入:

sdsdfsdfsd
4354353453
/*-/*/-/--/`

预期 abc.txt 内容:

sdsdfsdfsd
4354353453
/*-/*/-/--/

实际abc.txt内容:

sd s d f s d f s d 4 3 5 4 3 5 3 4 5 3  /*- /* /-/- - /

很遗憾,原文中的换行符不保留,那如何保留换行符,然后将文本写入输出文件?

【问题讨论】:

如果您的 AIX 上有 bash,那么您可以这样做:keyvariable+="$c"$'\n' 问题已更新。 只考虑echo "Paste the Bulletin; hit Control-D on its own line when you're done"; cat > abc.txt" 并避免很多问题。 【参考方案1】:

如果你的 AIX 上有 bash,那么你可以试试这个:

#!/bin/bash
echo "Paste the Bulletin:"
while IFS= read -r -t 2 c
do
    keyvariable+="$c"$'\n'
done
echo "$keyvariable" >abc.txt
echo "Thanks!" 

【讨论】:

【参考方案2】:

作为一种简化/替代方法,请考虑对工作流程稍作改变,然后这样做:

#!/bin/sh
echo "Paste the Bulletin; hit Control-D on its own line when you're done"
cat > abc.txt

【讨论】:

以上是关于如何从控制台读取多行文本,然后将内容保存到带有换行符的文件中?的主要内容,如果未能解决你的问题,请参考以下文章

怎么样计算从数据库里面取出来的文本内容长度并且控制其到达一定长度后换行

如何保存带有换行符或行间空格的文本?

使用 php 读取文件时删除文本区域中的换行符

如何在引导程序标签中从数据库中动态显示文本换行符?

七.sed多行模式和循环

Java将多行字符串保存到文本文件