LINUX.ORG.RU

Условия в bash

 ,


1

1

Перешел к условиям, что не так здесь? В любом случае выдает «если верно». То есть то что после then.

calc ()
{
read vvod
let vyvod=$vvod
if [ $vvod==$vyvod ]
then
echo "Неправильный ввод данных"
else
echo "Ответ — $vyvod."
fi
}

read command
if [ $command=="Калькулятор" ]
then
calc
else
echo "Нет такой команды."
fi

Например:

read command
if [ $command=="Калькулятор" ]
then
calc
else
echo "Нет такой функции."
fi

Все время запускает функцию. Если я даже ввел несуществующую.

★★

man форматирование.

anonymous
()
Ответ на: комментарий от Razip

Например чтобы если выполнил функцию можно было повторить этот кусок:

read command
if [ $command=="Калькулятор" ]
then
calc
else
echo "Нет такой функции."
fi
Razip ★★
() автор топика
Ответ на: комментарий от redgremlin
- if [ «x$c» = «xLOR» ]
+ if [ «x${c}» = «xLOR» ]
anonymous
()
Ответ на: комментарий от geekless

Не все test одинаково полезны

Historical systems have also been unreliable given the common construct:
test «$response» = «expected string»
One of the following is a more reliable form:
test «X$response» = «Xexpected string»

redgremlin ★★★★★
()
Ответ на: комментарий от sdio

Вот и я о том же. Чтобы test криво реагировал на закавыченный вариант (пустую строку), первый раз слышу.

geekless ★★
()
Ответ на: комментарий от redgremlin

А. То есть суть в том, чтобы не путалось с опциями. Тогда логично.

geekless ★★
()

help test
[ - это на самом деле команда test, которая принимает аргументы, в данном случае:
1. строка
2. что с ней делать (==)
3. ещё строка

Аргументы должны разделяться пробелами (или другими символами из $IFS).

AITap ★★★★★
()

Не подскажите, что я не так сделал. Хочу сделать вложенное условие.

start ()
{
echo "[Введите команду]"
read command
if [ $command == "Калькулятор" ]
then
calculator
else
if [ $command == "Калькулятор заработка" ]
then
calculator_earnings
else
echo "[Ошибка, нет такой команды]"
start
fi
fi
}
Razip ★★
() автор топика
Ответ на: комментарий от Razip

man test

       STRING1 = STRING2
              the strings are equal

man bash

       if list; then list; [ elif list; then list; ] ... [ else list; ] fi
              The  if  list is executed.  If its exit status is zero, the then
              list is executed.  Otherwise, each  elif  list  is  executed  in
              turn,  and  if  its  exit status is zero, the corresponding then
              list is executed and the command completes.  Otherwise, the else
              list  is executed, if present.  The exit status is the exit sta‐
              tus of the last command executed, or zero if no condition tested
              true.
sergv
()
Ответ на: комментарий от Razip
start ()
{
echo "[Введите команду]"
read command
if [ $command == "Калькулятор" ]
then
calculator
elif [ $command == "Калькулятор заработка" 
then
calculator_earnings
else
echo "[Ошибка, нет такой команды]"
fi
}

Не работает. Я никак не разберусь в чем проблема, кого не затруднит сделайте пожалуйста в моем коде поправки. Точнее на примере моего кода.

Razip ★★
() автор топика
Ответ на: комментарий от Razip
start ()
{
  echo -n "[Введите команду]: "
  read command
  if [ "X${command}" = X"Калькулятор" ]; then
	calculator
  elif [ "X${command}" = X"Калькулятор заработка" ]; then
	calculator_earnings
  else
	echo "[Ошибка, нет такой команды]"
  fi
}

P.S.:

  • «Поднимите мне веки».
  • «Тред не читай. Пиши сразу.»
sergv
()
Ответ на: комментарий от lllnk
$ help [
[: [ arg... ]
Evaluate conditional expression.

This is a synonym for the «test» builtin, but the last argument must
be a literal `]', to match the opening `['.
AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.