我正在编写一个BASH脚本,它将在一台(新的)Linux机器上安装和配置git
,并克隆用户选择的存储库。该脚本需要几个参数,我尝试使用read
命令来处理,如下所示:
read -s -p "Please enter a valid Personal Access Token(PAT): " pat
read -p "Please enter your Github username: " username
在第一行中,我添加了-s
标志,以使用户的输入静音,这样它就不会显示在终端上。然而,当我在输入后点击enter
时,下一个命令只是在同一行上运行。
1.我的第一次尝试是尝试在第一行添加一个新的行字符,然后添加到第二行:read -s -p "Please enter PAT: \n" pat
read -p $"\nPlease enter username: " username
。两个人都在终端上打印了\n
。
1.然后我尝试在两行上使用$
扩展字符:read -s -p $"Please enter PAT: \n" pat
;以及read -p "Please enter PAT: "$"\n" -s pat
read -s -p $"\nPlease enter username: " username
。这些也只是打印了\n
字符。
出于无奈,我甚至试图从echo
借出-e
标志;很明显这并不管用
我期望这些行只是在单独的行上一个接一个地打印。我知道这看起来像是一个小问题,但我可以想象对于不太熟悉shell的用户来说,这是多么令人困惑。
1条答案
按热度按时间vpfxa7rd1#
根据命令的手册页,使用此选项:
不要将反斜杠视为转义字符。反斜杠被认为是该行的一部分。特别是,反斜杠-换行符对不能用作行的延续。如果没有此选项,输入中的任何反斜杠都将被丢弃。你应该总是使用-r选项。