bash - 如何读取 Bash 脚本中的多行输入?

标签 bash shell line

<分区>

我想通过 shell 脚本从“粘贴”存储在一个文件和可变多行中。一个简单的 read 在第一行之后终止。

我怎样才能做到这一点?

例子:

echo "Paste the  certificate key:" 

1fv765J85HBPbPym059qseLx2n5MH4NPKFhgtuFCeU2ep6B19chh4RY7ZmpXIvXrS7348y0NdwiYT61
1RkW75vBjGiNZH4Y9HxXfQ2VShKS70znTLxlRPfn3I7zvNZW3m3zQ1NzG62Gj1xrdPD7M2rdE2AcOr3
Pud2ij43br4K3729gbG4n19Ygx5NGI0212eHN154RuC4MtS4qmRphb2O9FJgzK8IcFW0sTn71niwLyi
JOqBQmA5KtbjV34vp3lVBKCZp0PVJ4Zcy7fd5R1Fziseux4ncio32loIne1a7MPVqyIuJ8yv5IJ6s5P
485YQX0ll7hUgqepiz9ejIupjZb1003B7NboGJMga2Rllu19JC0pn4OmrnxfN025RMU6Qkv54v2fqfg
UmtbXV2mb4IuoBo113IgUg0bh8n2bhZ768Iiw2WMaemgGR6XcQWi0T6Fvg0MkiYELW2ia1oCO83sK06
2X05sU4Lv9XeV7BaOtC8Y5W7vgqxu69uwsFALripdZS7C8zX1WF6XvFGn4iFF1e5K560nooInX514jb
0SI6B1m771vqoDA73u1ZjbY7SsnS07eLxp96GrHDD7573lbJXJa4Uz3t0LW2dCWNy6H3YmojVXQVYA1
v3TPxyeJD071S20SBh4xoCCRH4PhqAWBijM9oXyhdZ6MM0t2JWegRo1iNJN5p0IhZDmLttr1SCHBvP1
kM3HbgpOjlQLU8B0JjkY8q1c9NLSbGynKTbf9Meh95QU8rIAB4mDH80zUIEG2qadxQ0191686FHn9Pi

读取它并将其存储在文件中,例如/tmp/keyfile 读取它并将其存储在变量 $keyvariable

最佳答案

您只需要决定阅读多少。

如果这是唯一的输入,您可以一直读到文件末尾。这是大多数 UNIX 实用程序的工作方式:

#!/bin/bash
echo "Pipe in certificate, or paste and it ctrl-d when done"
keyvariable=$(cat)

如果您想继续阅读脚本后面的内容,您可以一直阅读直到看到一个空行:

#!/bin/bash
echo "Paste certificate and end with a blank line:"
keyvariable=$(sed '/^$/q')

如果你想让它在交互上感觉更像魔法,你可以阅读直到脚本在没有输入的情况下持续两秒:

#!/bin/bash
echo "Paste your certificate:"
IFS= read -d '' -n 1 keyvariable   
while IFS= read -d '' -n 1 -t 2 c
do
    keyvariable+=$c
done
echo "Thanks!" 

关于bash - 如何读取 Bash 脚本中的多行输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913635/

相关文章:

bash - 通过 unix shell 管道

algorithm - 将线段限制为矩形的边界

bash - 如何获取第n个匹配的行号?

linux - 将 date bash 命令中的秒数舍入到下限

linux - 使用 awk 在文本文件中查找匹配日期范围的数据

c - 在脚本中使用 sleep 会消耗 cpu 周期吗?

Python 子进程 : interacting with a shell script

java - 使用 java.util.scanner.hasNext(regex) 获取整行

bash - bash 脚本中的自动补全

bash - wc 作为变量的结果