Использование путей из функции, использующей подстановку

Битрейт в iwconfig равен (примерно )базовой скорости канала, а не тому, что вы испытываете. Более высокие скорости достигаются за счет одновременного использования большего количества каналов, если говорить слишком просто. В Википедии есть много подробностей об этом.

Ваш драйвер может поддерживать различные «модуляции», например. возможно, вы можете выбрать только N и получить лучшую пропускную способность.

iwlist modulationдолжно показать, что доступно.

Сообщаемая iwconfig скорость является базовой скоростью радиоканала --что вы на самом деле видите, скажем, iperfили подобное?

0
04.11.2019, 18:41
1 ответ

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

Вместо этого, если вы используете язык оболочки с массивами и ссылками на имена (, как в bash4.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
}

То есть зациклить расширенный шаблон и добавить элементы в список, если они должны быть возвращены вызывающей стороне.

1
28.01.2020, 02:39

Теги

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