Может кто-нибудь подсказать почему скрипт не работает?
i=1
y=2
((h=${i}+${y}))
echo $hПочему выводиться пустая строка?Подскажите в чем ошибка?
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Работа в командной строке → Сумма двух переменных
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Может кто-нибудь подсказать почему скрипт не работает?
i=1
y=2
((h=${i}+${y}))
echo $hПочему выводиться пустая строка?Подскажите в чем ошибка?
Почему выводиться пустая строка?Подскажите в чем ошибка?
Первой строчкой в скрипте поставьте
#!/bin/bashivan--b⇓ пишет:Почему выводиться пустая строка?Подскажите в чем ошибка?
Первой строчкой в скрипте поставьте
#!/bin/bash
Поставил:
#!/bin/bash
i=1
y=2
((h=${i}+${y}))
echo $hВсе равно пустая строка выводиться. 
Все равно пустая строка выводиться.
test:
#!/bin/bash
i=1
y=2
((h=${i}+${y}))
echo $h$ ./test
3
А какая у Вас система и какой шелл используете?
ivan--b⇓ пишет:Все равно пустая строка выводиться.
test:
#!/bin/bash i=1 y=2 ((h=${i}+${y})) echo $hКонсоль:$ chmod +x test$ ./test
3
А можешь пояснить,что выполняют эти команды.А то я не понял 
А какая у Вас система и какой шелл используете?
Ubuntu 12.04
Использую bash
А можешь пояснить,что выполняют эти команды.А то я не понял
Ваше содержимое скрипта я записал в файлик test, командой chmod +x test сделал его исполняемым (без этого пришлось бы запускать скрипт командой sh test, ну, или bash test, как кому нравится), потом запустил скрипт на исполнение с текущего каталога: ./test. А 3 это результат исполнения скрипта.
Ubuntu 12.04
Использую bash
В таком случае результат должен быть аналогичен моему.
ivan--b⇓ пишет:А можешь пояснить,что выполняют эти команды.А то я не понял
Ваше содержимое скрипта я записал в файлик test, командой chmod +x test сделал его исполняемым (без этого пришлось бы запускать скрипт командой sh test, ну, или bash test, как кому нравится), потом запустил скрипт на исполнение с текущего каталога: ./test. А 3 это результат исполнения скрипта.
ivan--b⇓ пишет:Ubuntu 12.04
Использую bashВ таком случае результат должен быть аналогичен моему.
Спасибо за то что потратили на меня свое время.
А в чем может быть причина такой ошибки?Я уже и систему обновил, установил другой терминал (Hotwire Shell)...Еще что можно попробовать сделать?
Вставьте эту строчку
echo -n 'результат= 'перед строкой с echo $h, и добавьте пустую строку в самый конец скрипта, если ее там нет. Покажите как Вы запускаете скрипт и результирующий вывод Вашего скрипта.
Файл func:
#!/bin/bash
#!/bin/bash
i=1
y=2
((h=${i}+${y}))
echo -n 'результат= '
echo $hОн находиться в домашней директории.
В терминали ввожу:
sh func
На экране:
результат=
А если так попробовать?
!/bin/bash i=1 y=2 h=0 h=$(($i+$y)) echo -n 'результат= ' echo $h
Заработало!!!Спасибо.
Заработало
строка h=0 лишняя, это я просто забыл убрать.
#!/bin/bash
второй shebang не нужен...
sh func
sh и bash это, вообще говоря, разные интерпретаторы. во многом совместимы, но далеко не всегда...
если пишешь баш-скрипт, то запускай его bash ./script. или же укажи под шибенгом bash и запускай ./script
если пишешь под sh, то придётся быть осторожным... его синтаксис намного уже bash'евского и он может отличаться на разных системах. на чистом shell'е написаны(сгенирированы), например, ./configure-скрипты и стартовые скрипты sysvinit и openrc
в данном случае на большинстве дистрибутивов этот скрипт будет работать т.к. /bin/sh там ссылка на bash. Но в бубунте (как и в прочих дебианах) /bin/sh это dash, более легковестная версия шела... нужна была исторически для ускорения загрузки.
для sh надо писать так:
h=$(($i+$y))
ivan--b⇓ пишет:#!/bin/bash
второй shebang не нужен...
ivan--b⇓ пишет:sh func
sh и bash это, вообще говоря, разные интерпретаторы. во многом совместимы, но далеко не всегда...
если пишешь баш-скрипт, то запускай его bash ./script. или же укажи под шибенгом bash и запускай ./script
если пишешь под sh, то придётся быть осторожным... его синтаксис намного уже bash'евского и он может отличаться на разных системах. на чистом shell'е написаны(сгенирированы), например, ./configure-скрипты и стартовые скрипты sysvinit и openrcв данном случае на большинстве дистрибутивов этот скрипт будет работать т.к. /bin/sh там ссылка на bash. Но в бубунте (как и в прочих дебианах) /bin/sh это dash, более легковестная версия шела... нужна была исторически для ускорения загрузки.
для sh надо писать так:
h=$(($i+$y))
Спасибо)))А что такое шибенг?
А можешь пояснить,что выполняют эти команды.
http://ru.wikipedia.org/wiki/Chmod
А что такое шибенг?
Shebang - два первых символа: #!
ivan--b⇓ пишет:А что такое шибенг?
Shebang - два первых символа: #!
Спасибо 
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Работа в командной строке → Сумма двух переменных
Форум работает на PunBB, при поддержке Informer Technologies, Inc