Shell脚本创建文本文件、逐次输入参数后返回常规提示符的问题咨询
Shell 脚本交互问题修复方案
原脚本的核心问题
你现在碰到的“两个提示一次性弹出”的问题,根源是脚本逻辑完全不对:
- 两个
echo命令执行后会立刻把所有提示文字全部输出到终端,没有任何阻塞等待输入的逻辑 - 后面接的
cat >> myfile.txt会直接进入交互式输入状态,等用户一次性把所有内容输完、按Ctrl+D结束后才会写入文件,根本做不到输完一个参数再弹下一个提示 - 额外加的
sudo chmod +x myfile.txt和你“保存输入内容为文本文件”的需求完全不匹配:存配置/文本的文件本来就不需要可执行权限,普通用户目录下写文件也没必要用sudo提权
可直接运行的修复脚本
#!/bin/bash # 清空/新建目标存储文件 > myfile.txt # 第一个输入提示 echo -n "Enter FolderName : " read input_folder # 把读到的第一个值写入文件 echo "文件夹名: $input_folder" >> myfile.txt # 第二个输入提示 echo -n "Enter PortNumber : " read input_port # 把读到的第二个值写入文件 echo "端口号: $input_port" >> myfile.txt
运行效果说明
- 脚本启动后,先打印
Enter FolderName :提示,光标停在提示后面等你输入;核心逻辑是用read 命令做逐次阻塞等待,你输完按回车,才会打印下一个端口号的提示,完全实现逐次引导的效果 - 两个值都输完按回车后,脚本自动把内容写入
myfile.txt,执行完直接退出,回到系统常规命令提示符 - 如果你不需要在文件里加“文件夹名/端口号”的前缀,直接把对应行改成
echo "$input_folder" >> myfile.txt就行
注意:
echo后面的-n参数是为了不让提示自动换行,把光标直接放在提示文字后面,和你平时用终端输入的体验一致;如果不加这个参数,提示文字打完会自动换行,光跑到下一行开头,体验会差一点。
内容的提问来源于stack exchange,提问作者Dwarkanath bari
相关产品推荐
相关产品推荐

