globbing и $ #

Предположим, что мой скрипт оболочки имеет 3 аргумента:

./myscript dir1 material dir2 

Мне нужно $# чтобы сообщать количество элементов, globbed с dir1/* а не количество исходных 3 аргументов моего сценария.

Вы знаете, как я могу применить этот код?

  • Сравнение чисел в золе BusyBox
  • Извлечение определенной информации из журналов
  • Как вы создаете команду grep & для соответствия ряду шаблонов в зависимости от того, сколько из них предусмотрено во время выполнения?
  • Сценарий, использующий fifos, не генерирующий выход при обработке из stdin
  • Скрипт для запуска приложения с выделенной графической картой (Fedora 25)
  • Как я могу безопасно гарантировать, что переменная содержит только действительное имя файла?
  • rsync - копировать содержимое каталога только в том случае, если определенный файл не существует
  • удалите строку, если та же строка существует в предыдущей строке
  • One Solution collect form web for “globbing и $ #”

     for arg do set -- "$arg/"* [ -e "$1" ] && printf '%s/*:\t%d\n' "$arg" "$#" done 

    если вы хотите сохранить свои исходные аргументы после выполнения такого цикла:

     argc=$# for arg do set -- "$arg/"* "$@" [ -e "$1" ] && printf '%s/*:\t%d\n' "$arg" "$((${#}-argc))" shift "$((${#}-argc))" done 
    Linux и Unix - лучшая ОС в мире.