Set device = / dev / dsp Затем запустите темную сцену, используя: padsp darkice
padsp запускает указанную программу и перенаправляет ее доступ к совместимым звуковым устройствам OSS (/ dev / dsp и вспомогательным устройствам), чтобы звуковой сервер PulseAudio.
#!/bin/ksh
safeRunCommand() {
typeset cmnd="$*"
typeset ret_code
echo cmnd=$cmnd
eval $cmnd
ret_code=$?
if [ $ret_code != 0 ]; then
printf "Error : [%d] when executing command: '$cmnd'" $ret_code
exit $ret_code
fi
}
command="ls -l | grep p"
safeRunCommand "$command"
Источник: StackOverFlow
Это было бы традиционным:
#!/bin/bash
pvcreate /dev/md5 || die "pvcreate failed"
vgcreate vg0 /dev/md5 || die "vgcreate failed"
lvcreate -L 200MB vg0 -n test || die "lvcreate failed"
Функция die - это то, что вам нужно будет определить, которое печатает сообщение об ошибке, а затем выходит. Пример реализации может быть
die() {
echo $@ 1>&2 # print arguments of 'die' to standard error
exit 1 # exit the script
}
. Когда вы сделаете это так, сценарий не будет выводить какой-либо вывод, если только что-то не сработает, и в этом случае он не будет идти дальше. Если вы хотите, чтобы он продолжал идти, даже если команда не удалась, удалите строку exit из реализации die.
Если вы хотите получить сообщение для каждой успешной команды, вы можете сделать это:
#!/bin/bash
if pvcreate /dev/md5; then
echo "pvcreate succeeded"
else
echo "pvcreate failed"
fi
и аналогично для двух других команд.
#!/bin/bash
if pvcreate /dev/md5
then
if vgcreate vg0 /dev/md5
then
lvcreate -L 200MB vg0 -n test
fi
fi
Не тест. Но это должно работать.
Базовая структура if-else:
if condition
then
do somethin...
fi
Если все команды зависят от предыдущего, вы можете использовать set -e:
#!/bin/bash
set -e
pvcreate /dev/md5
vgcreate vg0 /dev/md5
lvcreate -L 200MB vg0 -n test
Обратите внимание, что вышеизложенное выйдет без специального сообщения, при котором команда не удалась.