LinuxForum.Fans
Тема

Сумма двух переменных

Автор: ivan--b 20 сообщений 5809 просмотров
#318657

Может кто-нибудь подсказать почему скрипт не работает?

text

i=1
y=2
((h=${i}+${y}))
echo $h

Почему выводиться пустая строка?Подскажите в чем ошибка?

#318659

"ivan--b⇓" написал:
Почему выводиться пустая строка?Подскажите в чем ошибка?
Первой строчкой в скрипте поставьте
text
#!/bin/bash
#318668

urfin написал:
[quote="ivan--b⇓"]Почему выводиться пустая строка?Подскажите в чем ошибка?
Первой строчкой в скрипте поставьте
text
#!/bin/bash

[/quote]
Поставил:

text

#!/bin/bash

i=1 y=2 ((h=${i}+${y})) echo $h

Все равно пустая строка выводиться. *WALL*

#318674
"ivan--b⇓" написал:
Все равно пустая строка выводиться.

test:

text
#!/bin/bash

i=1 y=2 ((h=${i}+${y})) echo $h

[console]$ chmod +x test

$ ./test
3[/console]

#318675

А какая у Вас система и какой шелл используете?

#318677
urfin написал:
[quote="ivan--b⇓"]Все равно пустая строка выводиться.

test:

text
#!/bin/bash

i=1 y=2 ((h=${i}+${y})) echo $h

[console]$ chmod +x test

$ ./test
3[/console][/quote]
А можешь пояснить,что выполняют эти команды.А то я не понял :[

#318678
urfin написал:
А какая у Вас система и какой шелл используете?

Ubuntu 12.04
Использую bash

#318684
"ivan--b⇓" написал:
А можешь пояснить,что выполняют эти команды.А то я не понял

Ваше содержимое скрипта я записал в файлик test, командой chmod +x test сделал его исполняемым (без этого пришлось бы запускать скрипт командой sh test, ну, или bash test, как кому нравится), потом запустил скрипт на исполнение с текущего каталога: ./test. А 3 это результат исполнения скрипта.

"ivan--b⇓" написал:
Ubuntu 12.04
Использую bash
В таком случае результат должен быть аналогичен моему.
#318686
urfin написал:
[quote="ivan--b⇓"]А можешь пояснить,что выполняют эти команды.А то я не понял

Ваше содержимое скрипта я записал в файлик test, командой chmod +x test сделал его исполняемым (без этого пришлось бы запускать скрипт командой sh test, ну, или bash test, как кому нравится), потом запустил скрипт на исполнение с текущего каталога: ./test. А 3 это результат исполнения скрипта.

"ivan--b⇓" написал:
Ubuntu 12.04
Использую bash
В таком случае результат должен быть аналогичен моему.[/quote]
Спасибо за то что потратили на меня свое время.
#318689

А в чем может быть причина такой ошибки?Я уже и систему обновил, установил другой терминал (Hotwire Shell)...Еще что можно попробовать сделать?

#318692

Вставьте эту строчку

text
echo -n 'результат= '

перед строкой с echo $h, и добавьте пустую строку в самый конец скрипта, если ее там нет. Покажите как Вы запускаете скрипт и результирующий вывод Вашего скрипта.

#318697

Файл func:

text

#!/bin/bash

#!/bin/bash

i=1 y=2 ((h=${i}+${y})) echo -n 'результат= ' echo $h

Он находиться в домашней директории.
В терминали ввожу:

sh func

На экране:

результат=
#318715

А если так попробовать?

text
!/bin/bash

i=1 y=2 h=0 h=$(($i+$y)) echo -n 'результат= ' echo $h

#318724
urfin написал:
А если так попробовать?
text
!/bin/bash

i=1 y=2 h=0 h=$(($i+$y)) echo -n 'результат= ' echo $h

*YAHOO* Заработало!!!Спасибо.

#318728

"ivan--b⇓" написал:
Заработало
строка h=0 лишняя, это я просто забыл убрать.
#318730
"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))

#318749
Fat-Zer написал:
[quote="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))[/quote]
Спасибо)))А что такое шибенг?

#318791

"ivan--b⇓" написал:
А что такое шибенг?
Shebang - два первых символа: #!
#319036

urfin написал:
[quote="ivan--b⇓"]А что такое шибенг?
Shebang - два первых символа: #![/quote]
Спасибо :)
Войдите или зарегистрируйтесь, чтобы ответить.