Если вы хотите выйти из системы после успешного завершения /path/to/shell-script.sh
, используйте:
/path/to/shell-script.sh && logout
Более грубый способ сделать это — заставить скрипт убить родителя:
kill -HUP "$PPID"
(PPID — это переменная, которая устанавливается оболочкой bash для одного ).
В продолжение превосходного ответа Эдуардо -Трапани ниже приведена слегка измененная версия скрипта, найденного на странице GNU , который ожидает ввода данных пользователем для каждого тома и повторяет попытку, если том не найден:
Для полноты эта команда используется для создания архива:
tar cvf /tmp/volume.tar /path/to/files/ --new-volume-script=./myscript.sh --tape-length=1000M
И это команда, которую я использовал для извлечения разделенного архива:
tar xvf /tmp/volume.tar --multi-volume --new-volume-script=./myscript.sh
myscript.sh:
#!/bin/bash
# For this script it's advisable to use a shell, such as Bash,
# that supports a TAR_FD value greater than 9.
echo "Press enter to continue to next volume"
read
echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE.
name=`expr $TAR_ARCHIVE : '\(.*\)-.*'`
case $TAR_SUBCOMMAND in
-c) ;;
-d|-x|-t) test -r ${name:-$TAR_ARCHIVE}-$TAR_VOLUME || echo "Failed to find volume"
;;
*) exit 1
esac
echo ${name:-$TAR_ARCHIVE}-$TAR_VOLUME >&$TAR_FD
Изменить :Это работает только с GNU Tar, который можно установить на macOS (с Homebrew )от:
brew install gnu-tar
Чтобы использовать его в качестве tar по умолчанию, вам нужно будет добавить его в свой путь следующим образом:
export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"