Bash脚本中带-s参数的read命令后添加换行的问题
解决Bash脚本中read -s后提示内容同行的问题
你遇到的问题是因为read -s在用户输入回车后不会自动输出换行符,导致下一条read的提示会跟在同一行。以下几种方法可以解决:
方法一:在read -s后手动添加echo
这是最简单直接的方式,在隐藏输入的read命令执行完后,用echo输出一个换行:
read -s -p "Please enter a valid Personal Access Token(PAT): " pat echo read -p "Please enter your Github username: " username
方法二:用printf替代read -p处理提示
read -p不会解析字符串中的转义字符,而printf可以正确处理转义序列。先通过printf输出提示,再执行read:
printf "Please enter a valid Personal Access Token(PAT): " read -s pat echo printf "Please enter your Github username: " read username
方法三:结合&&在read后输出换行
可以把echo和read命令用&&连接,在read执行完成后立即输出换行:
read -s -p "Please enter a valid Personal Access Token(PAT): " pat && echo $'\n' read -p "Please enter your Github username: " username
为什么之前的方法无效
read -p的参数会被直接当作纯字符串输出,不会解析\n这类转义字符,所以不管是直接加\n还是用$"\n",都会被当成普通字符打印出来,无法实现换行效果。
内容的提问来源于stack exchange,提问作者Koyejo
相关产品推荐
相关产品推荐

