Strona 1 z 1

prosty skrypt bash prośba o pomoc

: 30 września 2014, 12:08
autor: biolkell
Mam taki proste menu do skryptu bash, nie wiem czemu nie wchodzi mi w odpowiednie warunki, co robię źle?

Kod: Zaznacz cały

#!/bin/bash


echo 'Wybierz Student[s] lub Pracownik[p]'
read kto

#if 1==2;
if [["$kto"=s]];
then
    echo 'student'


elif [["$kto"=p]];
then
    echo 'pracownik'


else
    echo ' Zły wybór'
wynik

Kod: Zaznacz cały

Wybierz Student[s] lub Pracownik[p]
s
./skrypt.sh: line 8: [[s=s]]: nie znaleziono polecenia
./skrypt.sh: line 13: [[s=p]]: nie znaleziono polecenia
 Zły wybór

w takim wygadaniu działa
read test
if [ $test = "s" ]; then
echo "student"
fi

if [ $test = "p" ]; then
echo "pracownik"
fi

: 30 września 2014, 12:14
autor: f1.micro

Kod: Zaznacz cały

 if [[ "$kto"=s ]];
...
elif [[ "$kto"=p ]]; 
Zapomniałęś o spacjach po i przed nawiasami kwadratowymi.


A swoją drogą polecam Ci użyć case

Kod: Zaznacz cały

case $kto in
    p) echo "nauczyciel" ;;
    s) echo "student" ;;
    *) echo "cos innego" ;;
esac


: 30 września 2014, 12:48
autor: biolkell
Dzięki pomogło może komuś się przyda:

Kod: Zaznacz cały

#!/bin/bash


echo 'Wybierz Student[s] lub Pracownik[p]'
read kto


if [ $kto = "s" ]  ;
then
    echo 'student'
    echo "podaj login"
    read login 
useradd -d /student/$login -m $login 


elif  [ "$kto" = "p" ]  ;
then
    echo 'pracownik'
    echo "podaj login"
    read login 
useradd -d /home/$login -m $login 


else
    echo ' Zły wybór'

: 01 października 2014, 13:31
autor: LordRuthwen
Ja bym to jednakże robił na case zamiast if. Przy większej ilości zapytań jest zauważalnie szybszy i bardziej przejrzysty.