Предполагая, что вы используете bash
, вы можете легко сделать это с помощью косвенной ссылки:
$ foo=bar
$ bar=magicword
$ printf "%s\n" "${!foo}"
magicword
Синтаксис$var
(или${var}
)дает содержимое переменной var
.
Синтаксис ${!var}
дает содержимое переменной , названной вvar
.
Это одна из основных причин, по которой вам никогда не следует пытаться анализировать выводls
. Если вы просто используете оболочки, вы можете сделать:
for dir in /dir1/dir2/TopLevel/*/
do
echo "$dir" ## note the quotes, those are essential
done
Обратите внимание, как я использую for dir in /dir1/dir2/TopLevel/*/
, а не только for dir in /dir1/dir2/TopLevel/*
. Это только для перебора каталогов. Если вам нужны и каталоги, и файлы, используйте for f in /dir1/dir2/TopLevel/*
.
Кавычки вокруг $dir
необходимы, вы всегда должны заключать в кавычки переменные, особенно если они содержат пробелы.
Дополнительная литература: