[BASH] problem z pętlą

0

Chcę napisać skrypt tworzący kilku użytkowników, liczba użytkowników podawana z klawiatury. Co robię nie tak?

echo "ilu uzytkownikow stworzyc?";
read ilu;
 
while [$ilu>0];do
 
echo "Podaj nazwe nowego uzytkownika";
read nazwausera;
useradd $nazwausera;

echo "Podaj haslo uzytkownika $nazwausera";
passwd;
ilu=$[ilu-1]
done
2
  1. Niepoprawny operator porównania dla testu ? $ilu -gt 0
  2. Brak argumentu dla passwd (dla którego usera chcesz zmieniać hasło) ?
  3. Dlaczego używasz konstruktu ``ilu=$[ilu-1]``` ?
0

3 - żeby licznik pętli dekrementował się po 1 przejściu (utworzeniu użytkownika) i zakończyć jej wykonywanie po osiągnięciu 0

1

Za Advanced Bash-Scripting Guide:

n=$[ $n + 1 ]
#  Works even if "n" was initialized as a string.
#* Avoid this type of construct, since it is obsolete and nonportable.

Chodziło mi o to, co Cię skłoniło do zastosowania takiego konstruktu bashowy, a nie o to, że licznik się zmniejsza ;-)

0

Znalazłem przykład dekrementacji zaimplementowanej tym sposobem. Niestety po wprowadzeniu zmian, nadal wyrzuca błąd przy warunku pętli while :/

echo "Ilu uzytkownikow stworzyc?";
read ilu;
 
while [$ilu -gt 0];do
 
echo "Podaj nazwe nowego uzytkownika";
read nazwausera;
useradd $nazwausera;
#echo "Podaj haslo uzytkownika $nazwausera";
#passwd $nazwausera;
ilu=$[ilu-1]
done
;;
1

nie ma takiego programu jak [$ilu , jest za to [

musisz dodać spację po [ i przed ]

while [ $ilu -gt 0 ]; do

1 użytkowników online, w tym zalogowanych: 0, gości: 1