Bash - while hjælp
Go aften.. Jeg kunne godt lige bruge en hjælpende hånd.
Jeg bikser med et script. Og i det script, laver man en htaccess user, med tilhørende bruger. Så ledes:
Efter dette skal man skrive pass. Jeg kunne virkelig godt tænke mig at, hvis man skrev forkert i pass, at den loopede, så den kørte commanden igen, istedet for at faile og forsætte med scriptet.
Nu har jeg bruge en del tid på google, men opgiver.
Jeg bikser med et script. Og i det script, laver man en htaccess user, med tilhørende bruger. Så ledes:
echo "Please Type the password for the user: "
htpasswd -c /var/www/rutorrent/.htpasswd "$htauser"
Efter dette skal man skrive pass. Jeg kunne virkelig godt tænke mig at, hvis man skrev forkert i pass, at den loopede, så den kørte commanden igen, istedet for at faile og forsætte med scriptet.
Nu har jeg bruge en del tid på google, men opgiver.
Kommentarer6
Nu har jeg aldrig selv rodet
EDIT:
Du kan prøve noget i stil med:
#!/bin/bash
while true; do
echo "Please Type the password for the user: "
read input
output=$(htpasswd -c /var/www/rutorrent/.htpasswd "$input")
if [ "$output" = "TEKSTOUTPUT HVIS KODE ER RIGTIG" ]; then
break
else
echo "Wrong password, try again"
fi
done
Naej.. Det virker ikke
HejHvad med at bruge "$?"
Hvad med at bruge "$?" som er lig den sidst udfoerte kommandos exit code?
Hvis denne er forskellig fra 0, ved man saa, om htpasswd afsluttede med fejl (f.eks. at koderne ikke var ens). Ved modificering af Marcus' script:
#!/bin/bash
while true; do
echo "Please Type the password for the user: "
htpasswd -c /var/www/rutorrent/.htpasswd "$htauser"
if [ $? = 0 ]; then
break
fi
done
Det ser maaske lidt dumt ud at der bliver spurgt om password baade af scriptet selv samt htpasswd, saa maaske kan linjen
echo "Please Type the password for the user: "
udelades.
Bemaerk ogsaa, at htpasswd tillader brugeren at specificere et tomt password.
PS. Jeg gaar ud fra at variablen htauser er udfyldt i forvejen.
Tju hej hvor det fungere :)
Men hvorfor er 2 korrekte passwd's output = 0 ? Det forstår jeg ikke.
Det var da godt :)
Det er
Det er heller ikke programmets output men dens exit-code.
Der er consensus om, at naar et program har afsluttet successfuldt, skal den altid returnere exit-code 0. Skulle der derimod ske fejl, returnerer programmet en anden exit-code. Her staar det programmoeren frit for at vaelge hvilken kode der repraesenterer hvilke fejl. Nogen gange staar der i programmets manual hvad de forskellige koder betyder. Men 0 er altid lig success.
Cool.. Lige en ting mere..
Edit: Never mind.. Jeg havde "set -e" i starten af mit script. Det var årsagen. :)
Mange tak for hjælpen.