为什么bash会吞并角色

为什么bash会吞并角色,bash,stdin,Bash,Stdin,我在bash脚本中有以下代码: ssh_management if [[ "$PROMPT_SSH" == "true" ]]; then read -p "Generate and Install SSH keys? [y/n]" -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then generate_container_ssh install_

我在bash脚本中有以下代码:

ssh_management
if [[ "$PROMPT_SSH" == "true" ]]; then
  read -p "Generate and Install SSH keys? [y/n]" -n 1 -r
  echo ""
  if [[ $REPLY =~ ^[Yy]$ ]]; then
    generate_container_ssh
    install_ssh_keys
    check_ssh_state
  else
    echo "Skipping SSH key install"
  fi
fi
install_docker
但脚本错误如下:

Skipping container SSH key install
bash: line 102: nstall_docker: command not found
看来read命令不知何故在
install\u docker


不知道为什么会发生这种情况,也不知道它是如何解决的。

似乎有什么东西把我的标准输入搞砸了

read -p "Generate and Install SSH keys? [y/n]" -n 1 -r < /dev/tty
read-p“生成并安装SSH密钥?[y/n]”-n 1-r

已修复该问题。

读取命令似乎正常,然后删除
读取
,然后重试<代码>为什么会发生这种情况
第102行是哪一行?运行时是否正在修改文件?文件中是否没有
nstall\u docker
?文件中是否有不可打印的字符?当您使用需要LF的操作系统时,您的文件是否可能有Windows样式的CRLF行结尾?@KamilCuk删除读取行修复了问题(这就是我知道它是读取命令的原因)。第102行是“install_docker”函数。@Shawn我在Windows上开发,但vscode说行尾是LF。我正在WSL和Raspberry Pi上测试这个脚本。