Битрейт в iwconfig равен (примерно )базовой скорости канала, а не тому, что вы испытываете. Более высокие скорости достигаются за счет одновременного использования большего количества каналов, если говорить слишком просто. В Википедии есть много подробностей об этом.
Ваш драйвер может поддерживать различные «модуляции», например. возможно, вы можете выбрать только N и получить лучшую пропускную способность.
iwlist modulation
должно показать, что доступно.
Сообщаемая iwconfig скорость является базовой скоростью радиоканала --что вы на самом деле видите, скажем, iperf
или подобное?
Нет, вы не можете повторно использовать вывод циклов, поскольку вы показали, что это точно воспроизводит проблему с ls
, а также добавляет проблемы с echo
, возможно интерпретируя обратную косую черту в именах файлов.
Вместо этого, если вы используете язык оболочки с массивами и ссылками на имена (, как в bash
4.3+ ), вы можете сделать это немного по-другому:
myglob () {
declare -n list="$1"
list=( /path/to/search/* )
}
myexample () {
local results=()
myglob results
for pathname in "${results[@]}"; do
printf '%s\n' "$pathname"
done
# or shorter, just
# printf '%s\n' "${results[@]}"
}
Здесь функция myglob
принимает имя переменной из list
, которая является переменной ссылки на имя. Это означает, что любое использование list
фактически будет использовать именованную переменную. Функция просто расширяет глобус и сохраняет результат в list
, как если бы это был массив.
Затем функция myexample
вызывает myglob
со строкой results
. Таким образом, переменная list
в myglob
будет ссылаться на переменную results
и хранить в ней расширенный шаблон.
Затем функция продолжает использовать results
как массив элементов.
Если myglob
необходимо выполнить фильтрацию:
myglob () {
declare -n list="$1"
list=()
for pathname in /path/to/search/*; do
# decide whether to use "$pathname" or not
# then, if it is to be used,
list+=( "$pathname" )
done
}
То есть зациклить расширенный шаблон и добавить элементы в список, если они должны быть возвращены вызывающей стороне.