1

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

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

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

2

ivan--b⇓ пишет:

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

Первой строчкой в скрипте поставьте

#!/bin/bash

3

urfin пишет:
ivan--b⇓ пишет:

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

Первой строчкой в скрипте поставьте

#!/bin/bash

Поставил:

#!/bin/bash

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

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

4 (02.05.2013 17:33:16 отредактировано urfin)

ivan--b⇓ пишет:

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

test:

#!/bin/bash

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

 Консоль:
$ chmod +x test

$ ./test
3

5

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

6

urfin пишет:
ivan--b⇓ пишет:

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

test:

#!/bin/bash

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

 Консоль:
$ chmod +x test

$ ./test
3

А можешь пояснить,что выполняют эти команды.А то я не понял ah

7 (02.05.2013 17:55:49 отредактировано ivan--b)

urfin пишет:

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

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

8

ivan--b⇓ пишет:

А можешь пояснить,что выполняют эти команды.А то я не понял

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

ivan--b⇓ пишет:

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

В таком случае результат должен быть аналогичен моему.

9

urfin пишет:
ivan--b⇓ пишет:

А можешь пояснить,что выполняют эти команды.А то я не понял

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

ivan--b⇓ пишет:

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

В таком случае результат должен быть аналогичен моему.

Спасибо за то что потратили на меня свое время.

10

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

11

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

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

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

12

Файл func:

#!/bin/bash

#!/bin/bash

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

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

sh func

На экране:

результат=

13

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

!/bin/bash

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

14

urfin пишет:

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

!/bin/bash

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

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

15

ivan--b⇓ пишет:

Заработало

строка h=0 лишняя, это я просто забыл убрать.

16

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))

95% процентов проблем находятся между клавиатурой и стулом.

17 (02.05.2013 21:34:01 отредактировано ivan--b)

Fat-Zer пишет:
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))

Спасибо)))А что такое шибенг?

ivan--b пишет:

А можешь пояснить,что выполняют эти команды.

http://ru.wikipedia.org/wiki/Chmod

Реверс не отменяет аверса
Магия 3 LXDE

19

ivan--b⇓ пишет:

А что такое шибенг?

Shebang - два первых символа: #!

20

urfin пишет:
ivan--b⇓ пишет:

А что такое шибенг?

Shebang - два первых символа: #!

Спасибо ab