сдвиг в цикле getopts - уточнение необходимо

Вы можете использовать parted -l для определения типа таблицы разделов. Например:

$ sudo parted -l
Model: ATA TOSHIBA THNSNS25 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  32.2GB  32.2GB  primary  ext4         boot
 2      32.2GB  256GB   224GB   primary  ext4


Model: ATA Hitachi HDT72101 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4            boot
 2      32.2GB  996GB   964GB   primary  ext4
 3      996GB   1000GB  4295MB  primary  linux-swap(v1)

Поле Partition Table показывает, что я использую msdos MBR таблицу разделов (та, которая все еще обычно используется для Linux и Windows) на обоих дисках. Из страницы man parted может создавать (и, таким образом, надеюсь, идентифицировать) следующие типы таблиц разделов (или, более широко, "метки дисков"):

bsd
dvh
gpt    - this is a GPT partition table
loop   - this is raw disk access without a partition table
mac
msdos  - this is a standard MBR partition table
pc98
sun

Update

Стоит добавить команду для перечисления одного раздела, поскольку это не очевидно без знания parted, и поиск нужных данных при наличии нескольких дисков может стать проблемой. Для /dev/sda вы сделаете:

parted /dev/sda print
0
26.11.2018, 13:45
1 ответ
  1. Вам не нужноshift(и не следует )внутри цикла, потому что getoptsотслеживает, какой позиционный параметр он обрабатывает, обновляя переменную OPTIND.

  2. Вам не нужно от до shiftпосле цикла :вы можете использовать OPTIND, чтобы определить, какие позиционные параметры обрабатывать самостоятельно. Однако использование shift— это самый простой способ работы с аргументами, которые были обработаны getopts, при условии, что вам не нужно публиковать -их обработку самостоятельно.

Наличиеgetoptsвместо сдвига само по себе имеет несколько преимуществ :вы можете самостоятельно пересмотреть аргументы, если это необходимо, и вы можете воспроизвести исходную командную строку. Последнее полезно, например, в сообщениях об ошибках или если вам нужно запустить другую команду с теми же аргументами (. Я знаю, что использовал это в прошлом ).

1
28.01.2020, 02:41

Теги

Похожие вопросы