Я думаю, вам нужно &&
, а не ||
, так как вы хотите эхо и выхода (не эхо или выхода).
Кроме того, (exit 1)
запустит вспомогательную оболочку, которая выходит, а не выходит из текущей оболочки.
Следующий скрипт показывает, что вам нужно:
#!/bin/bash
[ $1 -ne 0 ] && (echo "This script must be run as root." 1>&2) && exit 1
echo Continuing...
Запуск этого с ./myscript 0
дает вам:
Continuing...
в то время как ./myscript 1
дает вам:
This script must be run as root.
Я думаю, это то, что вы искали.