Наконец-то нашел то, что нужно
blkid -o value -s TYPE <image>
вернет тип fs или ничего, если это необработанные данные. РЕДАКТИРОВАТЬ:
Как упоминал @psusi, parted
имеет машинный анализируемый вывод. Я нахожу это менее удобным, чем использование blkid
, но тоже может быть полезным.
parted -m <image> print | tail -n +3 | awk -F ":" '{print $(NF-2)}'
напечатает тип файловой системы каждого раздела. tail -n +3
используется для пропуска двух первых строк awk -F ":" '{print $(NF-2)}'
используется для получения типа fs, который является третьим последним элементом, начиная с конца
Ради вызова,это можно сделать с FreeBSDenv
или с GNU env >= 8.30 (, уже принятым OP )в шебанге:
#! /usr/bin/env -S sh -c 'exec awk -f "$0" -- "$@"'
BEGIN { for(i = 1; i < ARGC; i++) print ARGV[i] }
./myscript -h 1 2 3
-h
1
2
3
Однако это не значит, что это хорошая идея.
Вместо этого вы можете попробовать это:
#! /bin/sh
BEGIN { 2>"/dev/null"
exec awk -f "$0" "--" "$@"
}
BEGIN { for(i = 1; i < ARGC; i++) print ARGV[i] }
Это предполагает, что у вас нет команды BEGIN
в вашем PATH
.
Если у вас есть GNU awk
, вы можете использовать это
#!/usr/bin/gawk --exec
BEGIN { print "==>",ARGV[1],"<==" }
Пример использования
./a -h
==> -h <==
Я не проверял это, но вариант mawk
, похоже, использует -W exec
вместо --exec
. GNU gawk
утверждает, что поддерживает и это, но это не работает с #!
.