Un processus qui affiche «[y / n]» et demande des instructions de confirmation et de cible, ce qui est souvent utilisé lors de la création d'un petit outil CLI. Il y a trois façons de le faire: Go, Python et bash.
Que fais tu Si vous demandez «est-ce que ça va?» Et répondez seulement Non (n), «oh non» sera affiché, sinon il sera affiché comme «ouais bien».
bash
#!/bin/bash
read -p "are you okay?[Y/n]" ans
if [ "$ans" = "n" ]; then
echo "oh no."
else
echo "yeah good."
fi
Utilisez read
, lisez-le simplement, puis écrivez le traitement correspondant. read
le divise avec un espace blanc et le stocke dans ans. À ce moment-là, les espaces blancs avant et arrière ont été supprimés.
Python
from sys import stdin
print "are you okay?[Y/n]"
ans = stdin.readline()
if ans.strip() == "n":
print "oh no."
else:
print "yeah good."
C'est presque la même chose que bash, mais une différence est que la chaîne de caractères lue par readline ()
contient une pause à la fin.
Cette fois, il est supprimé avec strip ()
, mais sinon, utilisez uniquement la fin avec rstrip ()
etc.
Si vous comparez les chaînes de caractères telles quelles, les sauts de ligne ne correspondent pas, ce qui entraîne un mouvement involontaire.
Go
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
fmt.Println("are you okay?[Y/n]")
reader := bufio.NewReader(os.Stdin)
ans, err := reader.ReadString('\n')
if err != nil {
fmt.Print("input err:", err)
os.Exit(1)
}
if strings.TrimSpace(ans) == "n" {
fmt.Println("oh no.")
} else {
fmt.Println("yeah good.")
}
}
Comme prévu, il sera plus long que bash et Python car vous écrivez la gestion des principaux et des erreurs. Comme Python, Go inclut également des sauts de ligne, supprimez-le de manière appropriée avec strings.TrimSpace ()
ou strings.TrimRight ()
.
Recommended Posts