[英]Golang: Command Prompt
我正在編寫一個個人工具,它會給我提示並讓我執行有用的命令。 類似於 bash 但它不是 shell 程序
我想要一個像 Bash 這樣的輸入提示
如果您什么都不輸入,只需打印一個新行並再次掃描輸入如果您輸入熱鍵Ctrl + D ,則終止程序
應該是這樣的
[user@computer ~]$ go build
[user@computer ~]$ ./myapp
$
$ command
.. do command
$ (Ctrl + D hotkey)
[user@computer ~]$
我嘗試使用 Scanln,但它不接受空格,這是一個大問題
編輯:這是我實施的
func main() {
var input string
fmt.Println(banners.Gecko1)
fmt.Print("$ ")
fmt.Scanln(&input)
}
這是控制台:
[user@pc MyTool]$ go build
[user@pc MyTool]$ ./MyTool
-----ENTER COMMANDS
$ term1 term2 term3 term4 term5
[user@pc MyTool]$ erm2 term3 term4 term5
bash: erm2: command not found
[user@pc MyTool]$
如您所見,term1 之后的所有內容都被忽略並以某種方式傳遞給 bash...
我認為這就是 scanln 應該工作的方式。 文檔 state 它“從標准輸入掃描文本,將連續的空格分隔值存儲到連續的 arguments 中。” 或者,如果您想一次讀取一行,請使用 bufio package。 您可以參考下面的示例代碼:
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
input_reader := bufio.NewReader(os.Stdin)
for {
fmt.Print("$ ")
line, _ := input_reader.ReadString('\n')
line = strings.Replace(line, "\n", "", -1)
fmt.Println(line)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.