Не срабатывает exit в скрипте с условием
#!/bin/bash
[ "x$(tail -n+11 $0 | md5sum)" = "x$(head -n10 $0 | tail -n1)" ] || (echo "поврежден"; exit 1);
echo "поврежден" пишет, но exit 1 не срабатывает. Как переписать чтоб сработало?
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Переписать на нормальный if. Скобки запускают команды в саб-шелле и exit выходит из него, а не из основного шелла.
if [ "x$(tail -n+11 $0 | md5sum)" = "x$(head -n10 $0 | tail -n1)" ]; then
echo "поврежден"
exit 1
fi
Но если очень хочется, то надо использовать фигурные скобки:
[ "x$(tail -n+11 $0 | md5sum)" = "x$(head -n10 $0 | tail -n1)" ] || { echo "поврежден"; exit 1; }
Compound Commands в bash.