Почему является 1$ в функции не печатью первого аргумента сценария?

На самом деле это даже медленнее, чем вы думаете. Если вы создаете файл таким образом, он должен быть разреженным, а по умолчанию файловые системы монтируются с асинхронным вводом-выводом.

Конечно, cp хорошо известен тем, что довольно медленно копирует большие файлы (существуют различные способы решения этой проблемы - наиболее распространенным является использование cpio через канал).

Что именно вы пытаетесь измерить? Если вы хотите измерить скорость ввода-вывода памяти, используйте memtest. Если вы хотите реально измерить производительность ramfs, используйте fio

13
29.08.2018, 17:58
2 ответа

Позиционные параметры относятся к аргументам скрипта на основном уровне скрипта, но к аргументам функции в теле функции. Так

print_something Something

фактически напечатает Something.

Если вы хотите передать аргументы скрипта функции, вы должны сделать это явно. Используйте

print_something "$1"

для передачи первого аргумента или

print_something "$@"

, чтобы передать их все, хотя функция в примере использует только первый.

43
27.01.2020, 19:52

Это связано с тем, что вызываемая функция получает свой собственный набор позиционных параметров, независимый от родительского/вызывающего набора. Попробуйте

print_something "$1"

echo "$1", или даже лучше printf '%s\n' "$1", не забудьте указать расширения параметров в кавычках и что echoнельзя использовать для произвольных данных ).

10
27.01.2020, 19:52

Теги

Похожие вопросы