Вы можете посмотреть на живой дистрибутив, такой как GRML, который поддерживает копирование всех файлов squashfs в ОЗУ при загрузке (с использованием аргумента grml2ram
) и который можно легко настроить (см. grml-live
); или вы можете выложить свою систему как initramfs и загрузить загрузчик вместе с ядром.
Менее элегантно, вы могли бы придерживаться стандартного initramfs и добавить к нему сценарий, который загружает содержимое вашей SD-карты в память, а затем использует его в качестве rootfs.
Используйте"$@"
:
./tst2.sh "$@" --some --more --params
Разница между $*
и "$@"
заключается в том, что $*
будет одиночной строкой , состоящей из конкатенации всех позиционных параметров с первым символом $IFS
в качестве разделителя (. ] эта строка будет дополнительно подвергнута разбиению на слова -и расширению имени файла, поскольку она не заключена в кавычки ), а"$@"
(обратите внимание на двойные кавычки! )будет каждым позиционным параметром в кавычках .
Если вы хотите сохранить отдельные позиционные параметры, всегда используйте "$@"
.
Если вы хотите объединить позиционные параметры на первом символе $IFS
для создания одиночной строки , используйте "$*"
. Это редко используется, кроме как при создании текстовых строк в некоторых обстоятельствах.
Редко имеет смысл использовать $*
или $@
без кавычек.
Краткий пример сравнения "$@"
и"$*"
:
set -- "bumblebee 1" "bumblebee 2"
IFS=,
printf 'With "$@": %s\n' "$@"
printf 'With "$*": %s\n' "$*"
Вывод (с добавленными аннотациями)
With "$@": bumblebee 1 <-- "$1" here
With "$@": bumblebee 2 <-- "$2" here
With "$*": bumblebee 1,bumblebee 2 <-- "$1$IFS$2" here