На самом деле это даже медленнее, чем вы думаете. Если вы создаете файл таким образом, он должен быть разреженным, а по умолчанию файловые системы монтируются с асинхронным вводом-выводом.
Конечно, cp хорошо известен тем, что довольно медленно копирует большие файлы (существуют различные способы решения этой проблемы - наиболее распространенным является использование cpio через канал).
Что именно вы пытаетесь измерить? Если вы хотите измерить скорость ввода-вывода памяти, используйте memtest. Если вы хотите реально измерить производительность ramfs, используйте fio
Позиционные параметры относятся к аргументам скрипта на основном уровне скрипта, но к аргументам функции в теле функции. Так
print_something Something
фактически напечатает Something
.
Если вы хотите передать аргументы скрипта функции, вы должны сделать это явно. Используйте
print_something "$1"
для передачи первого аргумента или
print_something "$@"
, чтобы передать их все, хотя функция в примере использует только первый.
Это связано с тем, что вызываемая функция получает свой собственный набор позиционных параметров, независимый от родительского/вызывающего набора. Попробуйте
print_something "$1"
(и echo "$1"
, или даже лучше printf '%s\n' "$1"
, не забудьте указать расширения параметров в кавычках и что echo
нельзя использовать для произвольных данных ).