J'ai un script que je crée et j'ai un problème avec lui: je voudrais suspendre l'exécution et attendre la saisie de l'utilisateur. Je pensais l'avoir avec la read -p -n 1 $foo
commande, mais le système a des problèmes avec cette commande. Voici mon script actuel:
#!/bin/sh
# Ititialization
mainmenu () {
echo "Press 1 to update your system"
echo "Press 2 to install samba"
echo "Press 3 to install vsFTPd"
echo "Press 4 to install the current version of Webmin"
echo "Press 5 to configure samba for Active Directory"
echo "Press x to exit the script"
read -n 1 -p "Input Selection:" mainmenuinput
if [ "$mainmenuinput" = "1" ]; then
updatesystem
elif [ "$mainmenuinput" = "2" ]; then
installsamba
elif [ "$mainmenuinput" = "3" ]; then
installvsftpd
elif [ "$mainmenuinput" = "4" ]; then
installwebmin
elif [ "$mainmenuinput" = "5" ]; then
configuresambaforactivedirectory
elif [ "$mainmenuinput" = "x" ];then
quitprogram
elif [ "$mainmenuinput" = "X" ];then
quitprogram
else
echo "You have entered an invallid selection!"
echo "Please try again!"
echo ""
echo "Press any key to continue..."
read -n 1
clear
mainmenu
fi
}
# This builds the main menu and routs the user to the function selected.
mainmenu
# This executes the main menu function.
# Let the fun begin!!!! WOOT WOOT!!!!
Vous pouvez remarquer dans la fonction mainmenu l'entrée read -n 1 -p "text goes here". C'est là que je rencontre le problème selon ubuntu. Quelqu'un peut-il me dire ce qui ne va pas? Merci!
#!/usr/bin/env bash
ou#!/bin/bash
.Réponses:
Devrait être:
Besoin de mettre le
n
drapeau après, car cela indique à lecture de s'exécuter après la saisie de N caractères, n'attendez pas une ligne entière. Vérifiezhelp read
et cela pour plus de détails .la source
read -n 1 -p "Input Selection:" "mainmenuinput"
Il n'attend plus la pression de la touche entrée / retour :-)for $whatever; do $whatever; read -n 1 -p Continue?; done
help read
marche, puisque cehelp
n'est pas un programme ...?help help