myvar=$(find "/tmp/folders" -iname "App *" -type d -maxdepth 1)
count=${#myvar[@]}
echo $count
И в ответ получаю число 120, которое означает количество символов, а не строк
И это верно.
2. Почему в моем примере выводится количество символов в переменной, а не количество строк?
Потому что
${#myvar[@]}
-- это длина массива. Если идея была создать в первой строке массив из имён файлов, то там не хватает пары скобок:
myvar=( $(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) )
С таким определением myvar становится массивом а
${#myvar[@]}
выведет длину этого массива, т.е. количество строк в нём.
spoilerИмена файлов с пробелами, кстати, эту стройную картину малость испортят.
С вашим определением выводится длинна массива, но в качестве массива выступает одна строка, так что это длина строки в символах.
1. Реально ли подсчитать количество строк в файле или переменной с помощью глобов, как показано тут - https://stackoverflow.com/a/32727260 ?
Да. Но использование для этой цели массивов оболочки выглядит странно и расточительно. В shell канонично считать строки командой
wc -l
.