Интересный вопрос. Я думаю, что то, что вы хотите сделать, не полностью возможно, но вы можете приблизиться к этому, используя спецификатор формата %q
доступно в реализации Bash printf
:
%q causes printf to output the corresponding argument in a format that can be reused as shell input.
Заключительные строки вашего скрипта могут выглядеть так:
printf "%q\n" "$@" | tr '\n' ' ' >> actions
printf "\n" >> actions
Это не будет записывать команды точно так, как вы их вводите, а в форме который подходит для использования в оболочке, и если вы набрали эти записанные команды, вы получите результат, который изначально предназначался. Для например, после этого:
./action touch "new file"
вы получаете:
#Wed Sep 4 14:10:57 CEST 2019(success)
touch new\ file
Или после этого:
./action echo 'one
two
three
'
вы получаете:
#Wed Sep 4 14:11:44 CEST 2019(success)
echo $'one\ntwo\nthree\n'
Кстати, shellcheck
сообщает о 2 ошибках в вашем скрипте:
$ ~/.cabal/bin/shellcheck action
In action line 5:
echo "#"$(date)"(success)" >>./actions
^-- SC2027: The surrounding quotes actually unquote this. Remove or escape them.
^-- SC2046: Quote this to prevent word splitting.
In action line 13:
echo "#"$(date)"(failed)" >>./actions
^-- SC2027: The surrounding quotes actually unquote this. Remove or escape them.
^-- SC2046: Quote this to prevent word splitting.
Oracle VirtualBox стремится поддерживать новейшее выпущенное ядро Linux на момент выпуска конкретной версии VirtualBox .
Поскольку ядро 5.15.0 еще не существовало , когда был выпущен VirtualBox 6.1.28, нет никаких гарантий, что драйверы VirtualBox будут успешно собраны или будут работать с ядром 5.15.0.
Вы также используете пакет ядра, созданный с использованием версии компилятора, отличной от версии вашего Mint 19.3. Это также может вызвать проблемы при сборке драйверов VirtualBox для вашего ядра.
По третьей причине соответствующий пакет linux-headers
для вашего ядра 5.15.0 явно был собран для какого-то другого дистрибутива, потому что он зависит от другой версии libc6
. Попытка обновить стандартную версию дистрибутива libc6
сторонней -версией очень не рекомендуется , если вы действительно не знаете, что делаете.
Ошибка в libc6
обновлении потенциально может «все сломать» :, она может фактически сделать все динамически связанные исполняемые файлы (, т. е. более 99% всех исполняемых файлов ), непригодными для использования.
Если вам нужна более новая версия libc6
для того, что вы делаете, вам, вероятно, следует вместо этого обновиться до более новой версии вашего дистрибутива Linux. Другими словами, вы должны серьезно подумать об обновлении до Mint 20.2 в первую очередь, вместо того, чтобы пытаться прикрутить ядро -edge и более новое libc6
к Mint 19.3.
И если вам нужен VirtualBox, даже с Mint 20.2, придерживайтесь версии ядра 5.14.x или ниже до тех пор, пока не выйдет следующая отладочная версия VirtualBox (, вероятно, 6.1.30 ), если вы действительно не хотите участвовать в Разработка виртуалбокса.
Сначала необходимо обновить Mint 19.3 до 20 , а затем обновить Mint 20 до 20.2.