Răspunsul lui @raj este 100% corect pentru simplificarea codului.
Acestea sunt doar câteva moduri alternative de a folosi codurile de ieșire și poate arăta puțin mai multă lumină asupra modului în care pot fi utilizate.
Codul de ieșire poate fi verificat făcând un eco $?
imediat după comanda dvs. de id -u $user &>/dev/null
care nu trebuie înglobat în $(..)
sau ceva de genul asta.
Doar incearcă id -u <nume utilizator> &>/dev/null
și apoi tastați eco $?
pentru a verifica codul de ieșire.
Exemplu:
terrance@terrance-ubuntu:~$ id -u terrance &>/dev/null
terrance@terrance-ubuntu:~$ echo $?
0
terrance@terrance-ubuntu:~$ id -u mark &>/dev/null
terrance@terrance-ubuntu:~$ echo $?
1
În exemplul de mai sus, utilizatorul marcă
nu există pe computerul meu, deci starea de ieșire este 1.
Folosind codul de ieșire, îl puteți introduce într-un caz
declarație în loc de o daca..altfel
afirmație.
#!/bin/bash
echo „Introduceți numele de utilizator”
citiți utilizatorul -r
id -u „$user” &>/dev/null
cazul $? în
0) echo „Utilizatorul există”;;
1) adduser $user
echo "adăugați parola"
passwd $user
echo $utilizator >> text.txt
ecou "salvat";;
esac
Destul de interesant, folosind un dacă [ ]; atunci
mai poate fi folosit și prin adăugarea unui eco $?
în verificarea dvs. dacă, dar am observat că verificați dacă 1 să fie dacă există, dar 1 înseamnă că codul a ieșit cu 1 care înseamnă nu a fost găsit.
Adăugarea acestuia va funcționa și așa.
#!/bin/bash
echo „Introduceți numele de utilizator”
citiți utilizatorul -r
if [ $(id -u "$utilizator" &>/dev/null; echo $?) == 0 ]; atunci
echo „Utilizatorul există”
altfel
adduser $user
echo "adăugați parola"
passwd $user
echo $utilizator >> text.txt
ecou "salvat"
fi