LINUX.ORG.RU

Segmentation fault sh

 , ,


0

1

Segmentation fault sh

Мне нужно чтоб один скрипт выполнялся бесконечно но через несколько минут вылетает ошибка Segmentation fault. Неважно какой код скрипта допустим echo hellow world. все ровно с функцией goto либо jumpto вылетает. После добавления sleep 1s в конце кода скрипт уже крешится через час но все ровно это проблему не решает. Думал что дело в переполнений буфера текстом терминала но clear ничего не изменило.

#!/bin/bash
# BAT / CMD goto function
function goto
{
    label=$1
    cmd=$(sed -n "/^:[[:blank:]][[:blank:]]*${label}/{:a;n;p;ba};" $0 |
          grep -v ':$')
    eval "$cmd"
    exit
}
: start
echo "Hellow World!!!"
sleep 1s;
goto "start"
#!/bin/bash
# include this boilerplate
function jumpto
{
    label=$1
    cmd=$(sed -n "/$label:/{:a;n;p;ba};" $0 | grep -v ':$')
    eval "$cmd"
    exit
}

start=${1:-"start"}

start:
echo "Hellow World!!!!"
jumpto $start

Почитай руководство по bash и поищи в нем команды цикла. Скажем, while true тебе должно подойти. А так, как сейчас делаешь, не делай больше.

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

Почитай руководство по bash и поищи в нем команды цикла.

Человек написавший этот скрипт по любому в курсе. Вопрос о том, почему происходит то, что происходит.

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

Перечитал скрипт, он нас троллирует с этим «:».

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

Человек написавший этот скрипт по любому в курсе. Вопрос о том, почему происходит то, что происходит.

Нет, это же тупой копипаст имплемента функции goto в bash

Вместо того, чтобы просто написать

while /bin/true
do
echo "Hellow World!!!"
sleep 1
done
AVL2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.