LINUX.ORG.RU

Не могу понять в чем ошибка

 


0

1

Ну в общем я недавно стал писать скрипты на bash, наконец таки начал работать с функциями. Но вот не задача, ошибка вылезает.

Сия ошибка:

Helper_1.sh: 13: Helper_1.sh: let: not found Helper_1.sh: 14: Helper_1.sh: let: not found Helper_1.sh: 15: Helper_1.sh: let: not found

Имя файла: «Helper_1.sh».

Сам скрипт:

#!/bin/bash
calc ()
{
echo "============================================================"
echo "Добро пожаловать в калькулятор заработка с сайта на рекламе!"
echo "============================================================"
echo "Для начала укажите посещаемость вашего сайта."
read posehalka
echo "Сколько процентов трафика кликнули на рекламу?"
read ctr
echo "Теперь введите цену одного клика. (RUB)"
read click
let vyvod=$posehalka/100*$ctr*$click
let mes=$vyvod*30
let god=$mes*12
echo "============================================================"
echo "За день вы будите получать — $vyvod RUB."
echo "============================================================"
echo "В месяц вы получите — $mes RUB. В год — $god RUB."
echo "============================================================"
}

read command
$command

Однако если в таком виде выполнить скрипт, то все хорошо:

#!/bin/bash
echo "============================================================"
echo "Добро пожаловать в калькулятор заработка с сайта на рекламе!"
echo "============================================================"
echo "Для начала укажите посещаемость вашего сайта."
read posehalka
echo "Сколько процентов трафика кликнули на рекламу?"
read ctr
echo "Теперь введите цену одного клика. (RUB)"
read click
let vyvod=$posehalka/100*$ctr*$click
let mes=$vyvod*30
let god=$mes*12
echo "============================================================"
echo "За день вы будите получать — $vyvod RUB."
echo "============================================================"
echo "В месяц вы получите — $mes RUB. В год — $god RUB."
echo "============================================================"

Если убрать из первого варианта слово «let» то выведет к примеру

50000/100*2*1

Помогите пожалуйста. Буду очень благодарен. :)

★★

Последнее исправление: Razip (всего исправлений: 2)

вообщем

Не могу понять в чем ошибка

Your DNA.

anonymous
()

Замените везде по аналогии:

- let vyvod=$posehalka/100*$ctr*$click
+ vyvod=$(($posehalka/100*$ctr*$click))

- За день вы будите получать
+ За день вы будете получать

Критика:

  • нет проверки входных параметров
  • избыточное декорирование вывода программы
  • вопросы, ответы на которые есть в man bash или в http://www.bash-scripting.ru/abs/chunks/
Slavaz ★★★★★
()
Ответ на: комментарий от true_admin

В данном скрипте вызов функции идет следующим образом.

read command
$command

Просто ввожу название функции.

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

Ты точно смотришь это на той машине, где выполняешь скрипт?
1) на настоящем bash-е ошибка не воспроизводится.
2) для отсутствующей команды bash выдаёт не 'not found',
а 'command not found'.

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

Ты точно смотришь это на той машине, где выполняешь скрипт?

Да.

1) на настоящем bash-е ошибка не воспроизводится.

Как понять на «на настоящем bash-е»?

2) для отсутствующей команды bash выдаёт не 'not found', а 'command not found'.

Ну я не знаю, из терминала скопировано дословно.

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

Спасибо. Я и не знал что отличается запуск таким:

sh test.sh

И таким:

./test.sh

Вопрос решен. Благодарю всех и особенно ABW! :)

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

всё норм: бох есть мессия помноженный на 12 апостолов.

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

Ну ок, изменю названия переменных. :D

Razip ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.