如何以符合 posix 的方式通过提示获取用户输入到变量中

tes*_*low 1 shell-script posix read shellcheck

read -r -p "put an option: " option
echo $option
Run Code Online (Sandbox Code Playgroud)

这有效,但 shellcheck 给了我:

In POSIX sh, read -p is undefined.
Run Code Online (Sandbox Code Playgroud)

如何以符合 posix 的方式通过提示获取用户输入到变量中?

jes*_*e_b 8

您可以在没有以下情况下使用 read -p

printf "put an option: " >&2
read -r option
printf '%s\n' "$option"
Run Code Online (Sandbox Code Playgroud)

  • @testoflow 这取决于。你是在编写一个可移植的脚本,打算在任何 POSIX shell 中运行,还是你的目标是特定的 shell?当你定位到 `sh` 时,`shellcheck` 会给你那个警告,但是常见的实现(例如 `dash`、`busybox ash`)实际上支持使用 `read -p` 进行提示。然而,它在`zsh` 中不起作用,我认为,在ksh88 和衍生物中(以及在原始的Bourne shell 中)。 (2认同)