DEBUG
прерывание позволяет Вам выполнить команду прямо перед любым простым выполнением команды. Строковая версия команды для выполнения (со словами, разделенными пробелами), доступна в BASH_COMMAND
переменная.
trap 'previous_command=$this_command; this_command=$BASH_COMMAND' DEBUG
…
echo "last command is $previous_command"
Отметьте это previous_command
изменится каждый раз, когда Вы выполняете команду, поэтому сохраните ее к переменной для использования ее. Если Вы хотите знать статус возврата предыдущей команды также, сохраните обоих в единственной команде.
cmd=$previous_command ret=$?
if [ $ret -ne 0 ]; then echo "$cmd failed with error code $ret"; fi
Если Вы только хотите прерваться на неудавшиеся команды, использовать set -e
заставить Ваш сценарий выйти на первой неудавшейся команде. Можно отобразить последнюю команду от EXIT
прерывание.
set -e
trap 'echo "exit $? due to $previous_command"' EXIT
Альтернативный подход, который мог бы работать на некоторое использование, должен использовать set -x
распечатать трассировку выполнения сценария и исследовать последние несколько строк трассировки.
Поместите это в свой "/etc/apt/preferences":
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release o=Debian
Pin-Priority: -10
Это от man apt_preferences
где P
средства Pin-Priority
:
500 < P <=990
causes a version to be installed unless there is a version available belonging to the target release or the installed version is more recent
P < 0
prevents the version from being installed
Посмотрите эту страницу Wiki Debian для чего-то более нежного, чем страница справочника.
Если существует a wajig
пакет с положительным приоритетом контакта в любом из Ваших источников, apt-get install wajig
установит его. Default-Release
работы как установка высокого приоритета к тому конкретному выпуску. Если бы я понимаю правильно, Вы хотели бы apt-get install wajig
работать, если сжимают, имеет последнюю версию а не работать иначе; я не думаю, что это возможно.