Следующий perl oneliner считывает файл построчно, записывая последний массив до тех пор, пока он не встретится со строкой с физическим диском '1I :1 :1':
ssacli ctrl slot=0 show config | perl -ne 'if ($_ =~ /Array (.)/) { $array = $1; } elsif ($_ =~ /physicaldrive 1I:1:1/) { print $array; exit; }'
Имя файла должно быть «абсолютным» путем(в данном контексте, это просто путь с косой чертой ), иначе он будет искаться в BASH_LOADABLES_PATH
, возвращаясь к dlopen(3)
механизм поиска (, например, см. справочную страницу Linux). Кажется, что, несмотря на комментарии в enable.def
, они не включают текущий каталог (, что хорошо, IMO ).
Просто используйте путь:
bash-5.0$ enable -f print print
bash: enable: cannot open shared object print: print: cannot open shared object file: No such file or directory
bash-5.0$ enable -f./print print
bash-5.0$ help print
print: print [-Rnprs] [-u unit] [-f format] [arguments]
Display arguments.
Output the arguments. The -f option means to use the argument as a
format string as would be supplied to printf(1). The rest of the
options are as in ksh.