linux - 在 Shell 中读取多行用户输入

标签 linux bash shell

您好,我有一个程序,如果用户输入我从文件中读取的文件名,否则我会提示他们输入。

目前我在做:

    input=$(cat)
    echo $input>stdinput.txt
    file=stdinput.txt

这个问题是它不读取输入中的换行符,例如如果我输入

s,5,8
kyle,5,34,2 
j,2

输出

s,5,8 k,5,34,2 j,2

要存储在文件中的预期输出是

s,5,8
kyle,5,34,2 
j,2

我需要知道如何在阅读时包含换行符。?

最佳答案

echo 将抑制换行符。您不需要额外的 $input 变量,因为您可以直接将 cat 的输出重定向到文件:

file=stdinput.txt
cat > "$file"

另外,在 cat 之前定义 $file 对我来说更有意义。已经改变了这一点。


如果您需要用户在文件和 $input 中输入,那么 tee 就足够了。如果将 cat(用户输入)的输出通过管道传输到 tee,则输入将同时写入文件和 $input:

file=stdinput.txt
input=$(cat | tee "$file")

关于linux - 在 Shell 中读取多行用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736428/

相关文章:

java - 如何删除旧版本的Java并安装新版本

mysql - bash 脚本中的循环未捕获文件中的所有行

linux - 我的 shell 脚本如何对不同文件夹中的文件进行操作?

java - CTRL-C 不适用于 Java 程序

regex - 仅当字符串存在于特定列中时才打印行

bash - 使用 EOF 时 SSH 返回值

linux - PostgreSQL 错误 : could not open file "base/.../..."

c - 如何在静态库中存储版本号?

python - 对资源要求高的进程是否分成多个进程?

regex - 使用 sed 替换 URL 模式失败