如何通过读取命令使用多个变量进行输入?

如何通过读取命令使用多个变量进行输入?

我正在使用 GNU bash - 版本 4.2.10(1)。我想使用单个读取多个变量shell 脚本中的命令。所以我尝试如下:

echo " Enter P N R : "
read P N R

但它不起作用。它只要求 P 变量的单个值并返回提示。我用谷歌搜索但没有找到任何解决方案。

答案1

read, without-r期望输入中的单词由特殊参数的字符分隔$IFS(默认为 SPC、TAB 和 NL,尽管 asread只读取一行,除非以反斜杠结尾,NL 不能计数),其中反斜杠可用于转义分隔符或允许在下一个物理行上继续一行(删除反斜杠换行序列)。

因此,用户必须在此处输入 P、N、R 的值,空格或制表符分隔,例如:

value_for_P value_for_N value_for_R

或者如果值可以包含空格:

value\ for\ P value\ for\ N value for R

(这里我们没有费心转义 R 的空格,因为第三个之后的行的其余部分单词无论如何最终都会进入R;用户仍然需要转义尾随不过空间)。

如果您希望用户在 3 行中输入值,则需要 3 次read调用。然后,您需要-r避免反斜杠处理并使 IFS 为空:

IFS= read -r P
IFS= read -r N
IFS= read -r R

相关内容