Я столкнулся с конкретной проблемой c, которая на первый взгляд проста.
Если я наберу на своей оболочке bash подстановочный знак, соответствующий различным файлам:
$ myfile=probe_*.txt
и делать после:
$ echo $myfile
Я получаю список всех файлов, соответствующих шаблону, то есть:
$ probe_GCph.txt probe_GCsp.txt probe_GCsp_WL_GCph.txt probe_GCsp_XC.txt probe_GCsp_XC_WL_GCph.txt probe_WL.tx
Но теперь я хотел бы сделать шаблон probe_*.txt
как аргумент $2
в функцию.
На данный момент, если я сделаю в bash функцию:
function multiple_files { myfile=$2
echo $1
echo $3
echo $myfile
}
Затем при следующем выполнении:
$ multiple_files . $myfile dir/
Тогда я получаю только первое имя файла probe_GCph.txt
, которое печатается для третьего эха (echo $myfile
) в определении функции bash.
Как можно Я передаю подстановочное имя файлов в качестве аргумента (здесь $ 2) и могу после этого развернуть его, чтобы перечислить все имена файлов, соответствующие функции bash?
Кажется, что существует конфликт между аргументом $ 2, который учитывает только первые расширенные файлы, равные probe_GCph.txt
, и передачу подстановочного знака в качестве аргумента $ 2, не раскрывая его.
Как обойти эту проблему?