2016-08-15 2 views
1

У меня есть некоторые проблемы при получении моего .sh скрипт работает, я получаю следующее сообщение об ошибке:.sh неожиданные «фи (ожидаемые "тогда")

power_toggle.sh: line 8: syntax error: unexpected "fi" (expecting "then") 

Сценарий:

#!/bin/sh 
SERVICE='hyperiond' 
if pgrep $SERVICE > /dev/null 
then 
    killall hyperiond 2>/dev/null 
else 
    /storage/.config/autostart.sh > /dev/null 2>&1 & 
fi 

I попробовали shellcheck.net, и он не нашел в этом ничего плохого. У меня также есть chmod + x'ed. 2 команды отлично работают с ними через терминал ssh.

Надеюсь, что ребята могут помочь , потому что я потерян.

+2

Не видите ничего плохого, и это работает для меня хорошо ... Вы уверены, что сценарий выше - это то, что вы на самом деле пытаетесь выполнить? –

+0

Показанный синтаксис правильный. Это сильно говорит о том, что любой скрипт генерирует ошибку, а не тот, который вы показываете. (Существует некоторая возможность для улучшения кода - номинально, рекомендуется использовать двойные кавычки вокруг переменных в «pgrep» $ SERVICE »и, безусловно, хорошая идея использовать« killall »$ SERVICE» (так что вы можете измените сервис, не убивая неправильные процессы), но синтаксически, это нормально.) –

+0

Я не знаю, что это такое, у меня есть трижды, 100 раз, проверьте его много раз. Если я попробую «sh power_toggle.sh», это даст мне вышеуказанную ошибку. Если я попытаюсь ./power_toggle.sh, он дает мне «sh: ./power_toggle.sh: not found». Я использую окна и загружаю их в openelec @ Raspberry Pi. – siz

ответ

3

Преобразование окончаний строк из Windows в Unix (только для LF).

+1

Если у них нет смешанных контуров строк, сценарий должен был вызвать предупреждение или ошибку, чтобы не найти '/ bin/sh \ r'. –

+0

Это сработало, omg потрачено впустую 1 час для этого .. Спасибо :) – siz

+1

@ Mr.Llama, только если он был exec() 'd, а не вызван из оболочки (которая обычно возвращается к выполнению с помощью 'sh' или как интерпретатор, когда сбой системы exec). –

Смежные вопросы