如何从控制台读取多行文本,然后将内容保存到带有换行符的文件中?
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
【讨论】:
以上是关于如何从控制台读取多行文本,然后将内容保存到带有换行符的文件中?的主要内容,如果未能解决你的问题,请参考以下文章