Круглая скобка работает в самой оболочке удара, но не в сценарии удара

Вы могли проверить его при помощи команды

mount

Это даст Вам все смонтированные файловые системы. То, что Вам интересно, - то, где корневая файловая система смонтирована (я предполагаю, что это - то, что Вы подразумеваете под основным диском).

Это - мой демонстрационный вывод команды монтирования (просто строка, которая содержит главный диск),

/dev/sda1 on / type ext4 (rw,errors=remount-ro)

То, что это говорит, - то, что раздел sda1 (просто sda представляет disn, sda1, представляет раздел), смонтирован как корень. Таким образом, теперь мы знаем, что главный диск является sda. Теперь мы должны проверить то, что диск на самом деле sda.

Используя lshw

Chech это с

sudo lshw -class disk

Мой вывод

*-disk                  
   description: ATA Disk
   product: TOSHIBA
   vendor: ...
   physical id: ....
   bus info: ...
   logical name: /dev/sda
   version: ...
   serial: ...
   size: 465GiB (500GB)

От которого мы видим, что sda является диском Toshiba на 500 ГБ.

Используя fdisk

sudo fdisk -l sda

Вывод:

Disk sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00024cba
11
20.12.2018, 02:14
2 ответа

Это потому, что синтаксис, который вы используете, зависит от конкретной функции bash, которая по умолчанию не активирована для неинтерактивных оболочек (скриптов). Вы можете активировать его, добавив соответствующую команду в свой скрипт:

## Enable extended globbing features
shopt -s extglob

if [ -d "folder" ]; then
  cp -r folder/!(exclude-me) ./
  rm -rf folder
fi

Это соответствующий раздел man bash:

   If the extglob shell option is enabled using the shopt builtin, several
   extended  pattern  matching operators are recognized.  In the following
   description, a pattern-list is a list of one or more patterns separated
   by a |.  Composite patterns may be formed using one or more of the fol‐
   lowing sub-patterns:

          ?(pattern-list)
                 Matches zero or one occurrence of the given patterns
          *(pattern-list)
                 Matches zero or more occurrences of the given patterns
          +(pattern-list)
                 Matches one or more occurrences of the given patterns
          @(pattern-list)
                 Matches one of the given patterns
          !(pattern-list)
                 Matches anything except one of the given patterns
11
27.01.2020, 19:58

Добавьте эту строку в верхней части вашего скрипта:

shopt -s extglob

! (...) является расширенной функцией сравнения шаблонов, для ее использования необходима опция extglob. Смотрите shopt builtin для получения более подробной информации.

2
27.01.2020, 19:58

Теги

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