我正在使用 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