在带有标准答案的 Bash 脚本中使用“读取”

Flo*_*Flo 5 bash-scripting

我如何将read某些内容用作标准响应,但用户可以更改?(默认答案)

gle*_*man 11

你会这样写:

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

因此,无法使用 bash 3.2编辑默认值。你可以这样做:

default="the default value"
read -p "your answer [default=$default] " answer
: ${answer:=$default}
echo "you answered: $answer"
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*ill -1

参考读取 - 从标准输入读取一行

这是内置的 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"
Run Code Online (Sandbox Code Playgroud)