You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash脚本在AIX服务器读取控制台多行内容存文件并保留换行

问题修复方案

根因说明

换行丢失由两个错误写法导致:

  • 未用双引号包裹变量输出:echo $keyvariable 会触发Shell的字段拆分规则,所有连续空白符(换行、制表符、空格)都会被替换为单个空格,直接丢失原始换行
  • 逐字符读取逻辑中额外手动追加了$'\n',打乱了原输入的换行结构

修复后脚本

#!/bin/bash
echo "Paste the Bulletin:"
keyvariable=""
# 超时2秒判定粘贴结束
while IFS= read -d '' -n 1 -t 2 c
do
    keyvariable+="$c"
done
# 双引号包裹变量完全保留原始格式写入
printf "%s" "$keyvariable" > abc.txt
echo "Thanks!"

关键修改点

  • 移除循环内多余的$'\n'追加逻辑,原输入的换行符会被正常读取无需额外添加
  • 改用printf+双引号包裹变量输出,100%保留输入的所有原始字符,包括换行、特殊符号
  • 移除首行多余的单次read逻辑,避免吞掉输入的第一个字符

AIX环境运行注意事项

  • AIX默认Shell为ksh,该脚本依赖Bash特性,请确保执行时使用Bash解释器,可先给脚本加执行权限后直接运行:chmod +x 你的脚本名称.sh && ./你的脚本名称.sh
  • 完成内容粘贴后等待2秒,脚本会自动检测输入结束并写入文件

内容的提问来源于stack exchange,提问作者The KNVB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:48:04