在bash中,有一个名为read
的内置函数,它有-p开关。例如:
read -p "Please enter a value: " value
echo "${value}"
如果此文件的执行方式与$ ./bashfile > result.txt
您最终会得到一个包含$value\n
但不包含Please enter a value: $value\n
在go中,你可以做类似的事情。这是一段代码:
fmt.Print("Please enter a value: ")
reader := bufio.NewReader(os.Stdin)
value, _ := reader.ReadString('\n')
fmt.Println(value)
如果您使用$ ./goexecutable > result.txt
result.txt的内容看起来像Please enter a value: value\n
是否有一个与read -p中的bash <PROMPT>
字符串相同的字符串打印到命令行,而不是stdout?
答案 0 :(得分:5)
Bash&#39; read -p
只是将提示打印到stderr
。您可以通过将脚本的stderr重定向到/dev/null
并注意到没有提示打印。
./bashfile > result.txt 2> /dev/null
您可以使用fmt.Fprintf
在Go中执行相同操作。
fmt.Fprintf(os.Stderr, "Please enter a value: ")