Псевдокод, в котором неполный псевдопопытка-catch после комментария cas
#!/usr/bin/env bash
# http://askubuntu.com/q/799834/25388
# Use: `sh myScript`; sudo does not work with Matlab.
#set -e # no rudimentary error checking
# https://stackoverflow.com/a/69808/54964
SWAP_FILE="/media/masi/SamiSwapVirtual/.swap_file_20.7.2016"
SIZE_MB="1000"
TO_RUN="matlab"
sudo dd if="/dev/zero" of="${SWAP_FILE}" bs="1M" count="${SIZE_MB}" status="progress"
sudo mkswap "${SWAP_FILE}"
sudo chmod 0600 "${SWAP_FILE}"
sudo chown root:root "${SWAP_FILE}" # http://unix.stackexchange.com/a/297153/16920
# TODO error-handling if any error, do swap
# Error-trapping here as here https://stackoverflow.com/a/185900/54964 ?
#
# My proposal where I am not sure about how to connect the commands inside the first block in braces
#
# https://stackoverflow.com/a/22010339/54964
{
sudo swapon -v "${SWAP_FILE}"
echo "Swap enabled. Press enter to continue"; read
"${TO_RUN}"
} || {
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v "${SWAP_FILE}"
rm -vf "${SWAP_FILE}"
exit 1
}
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v "${SWAP_FILE}"
rm -vf "${SWAP_FILE}"
Выход
dd: failed to open '/media/masi/SamiSwapVirtual/.swap_file_20.7.2016': Permission denied
mkswap: cannot open /media/masi/SamiSwapVirtual/.swap_file_20.7.2016: Permission denied
chmod: changing permissions of '/media/masi/SamiSwapVirtual/.swap_file_20.7.2016': Operation not permitted
[sudo] password for masi:
Open
dd
и mkswap
дает В доступе отказано
, иногда в зависимости от диска, поэтому есть sudo
. Система: Linux Ubuntu 16.04 64 бит
Ядро Linux: 4.6
Оборудование: Macbook Air, середина 2013 г.
Связанная ветка: Обработка ошибок в BASH