在 Bash 脚本中使用“read”和标准答案

在 Bash 脚本中使用“read”和标准答案

我怎样才能使用read某些东西作为标准响应,而用户可以更改它?(默认答案)

答案1

bash 版本 4+

你会这样写:

read -p "enter a value: " -i default -e answer
echo "you answered: $answer"
  • -i default指定默认答案。
  • -e启用 的交互(编辑)模式read。如果没有此选项,默认答案将不起作用。

bash 版本 < 4 (macos 有 bash 3.x)

所以,不能编辑使用 bash 3.2 的默认值。您可以这样做:

default="the default value"
read -p "your answer [default=$default] " answer
: ${answer:=$default}
echo "you answered: $answer"

如果用户未输入任何内容(空字符串),则使用默认值

答案2

参考read—从标准输入读取一行

这是一个 BASH shell 内置命令。

从标准输入读取一行,将第一个单词分配给第一个名字,将第二个单词分配给第二个名字,依此类推,将剩余的单词及其中间的分隔符分配给最后一个名字。

如果从标准输入读取的单词数量少于名称数量,则剩余的名称将被分配空值。

IFS 变量值中的字符用于将行拆分为单词。

反斜杠字符“\”可用于删除读取的下一个字符和行继续的任何特殊含义。

如果没有提供名称,则将读取的行分配给变量 REPLY。返回代码为零,除非遇到文件结尾或读取超时。

例子

#!/bin/bash
read var_year
echo "The year is: $var_year"

echo -n "Enter your name and press [ENTER]: "
read var_name
echo "Your name is: $var_name"

相关内容