linux - 如何在echo中使用Read命令,就像填空一样

标签 linux bash shell

正在编写脚本。例如:

echo "my name is 'read' and am from 'read' city" > outfile.txt

当它运行时,它不会首先打印句子,即我的名字是。相反,它首先要求为使用的 2 个读取命令输入 2 个输入,然后形成完整的句子,例如“我的名字是 sudhir,我来自 vizag 城市”

我希望脚本执行第一个“我的名字是read(要求输入),来自read(要求另一个输入)城市”,在给出输入后,它应该一次性重定向到outfile.txt。

如何处理这个问题?一句话就能实现吗?

因为我想对一个文件中的 480 个问题使用相同的逻辑,并且没有任何脚本知识的人应该能够引用同一文件中存在的先前问题来添加更多问题。

最佳答案

没有一个很好的方法来做到这一点,因为 read 将换行符从输入写入终端,但我们可以分两次完成此操作。

  1. 获取用户的输入
  2. 将结果写入文件

您可以将以下内容放入脚本中

#!/bin/bash

echo -n 'my name is '; read -r name
echo -n ' and I am from '; read -r city
echo ' city'

printf "my name is %s and I am from %s city\n" \
   "$name" "$city" > output.txt

对于用户来说,它看起来像这样

my name is sudhir
and I am from vizag
city

但在文件中会是这样的

my name is sudhir and I am from vizag city

关于linux - 如何在echo中使用Read命令,就像填空一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929582/

相关文章:

c - 使用 strlen 调用获取 NASM 中的字符串长度

c - C中位域的内存管理

linux - 使用 PuTTY 连接后无法使用 Perl 脚本连接到 Linux Oracle 数据库

linux - 远程运行 shell 脚本时如何解决依赖关系?

linux - Unix,替换错误错误?

linux - 无法在 shell 脚本中打印公共(public) ip

linux - 脚本不在 bg 中运行

linux - 在 linux(CentOS)/多处理器设置中,如何将 CPU 内核分配给 NUMA 节点?

windows - 我可以在 Windows 10 上获取(新的)bash 来加载 .profile

Python shutil.which 不适用于 wsl.exe