/ / Problem z instrukcją powłoki if - bash, shell

Problem z instrukcją powłoki if - bash, shell

Mam skrypt powłoki w następujący sposób (zaczerpnięty z niektórych slajdów wykładów):

#/bin/sh
echo -e "enter a number:c"
read number
if [$number -ne 2]
then
echo "Number is not equals to 2"
fi

I dostaję błąd składniowy gdzie fi jest. Masz pojęcie, czym jest problem?

Ponadto, co robi extra termin w echo -e "enter a number:c" oznacza (oprócz prostego faktu, że prosi o numer)?

EDYTOWAĆ: teraz zrobiłem

#/bin/sh
echo -e "enter a number:c"
read number
if [ "$number" -ne 2 ]
then
echo "Number is not equals to 2"
fi

I nadal otrzymuję błąd ...

To samo dotyczy

#/bin/sh
read -p "enter a number: " number
if [ "$number" -ne 2 ]
then
echo "Number is not equals to 2"
fi

</ strike>

ROZWIĄZANY: Zrobiłem tam błąd kopiowania. Dzięki za wkład, tak przy okazji, chłopaki.

Odpowiedzi:

2 dla odpowiedzi № 1

Problem polega na tym, jeśli warunek:

if [$number -ne 2]

Musisz wstawić spację [ a wcześniej ] więc użyj:

if [ "$number" -ne 2 ]

Twój skrypt może zostać przepisany jako:

#/bin/sh
read -p "enter a number: " number
if [ "$number" -ne 2 ]
then
echo "Number is not equals to 2"
fi

Jeśli jednak bash jest dostępny, lepiej przełączyć się na bash zamiast starej powłoki Bourne'a.