Bash скрипт не работает в DD-wrt

Надеюсь, вы попали куда-нибудь со своим списком.Вы уверены, что команды property не задокументированы в этой версии? В этом ответе предлагается использовать команду типа btrfs property set -ts /path/to/snapshot ro true, чтобы исправить проблему.

Для будущих читателей: установите для новых моментальных снимков доступ только для чтения с параметром -r при их создании. Я использую что-то вроде этого в своем сценарии:

comm -23 \
    <(btrfs subvolume list -ors --sort=path /fsA/ | perl -ne 'print if s/.+?\spath\s+(.+)/\1/') \
    <(btrfs subvolume list -ors --sort=path /fsB/ | perl -ne 'print if s/.+?\spath\s+(.+)/\1/')

Это должно предоставить список доступных только для чтения томов моментальных снимков в файловой системе A, которые не в файловой системе В. Вы можете перебирать список, выполняя отправку/получение для каждого из них для синхронизации.

1
20.11.2016, 02:05
1 ответ

То, что вы разместили, не является сценарием bash , это сценарий, который будет выполняться какой-то неопределенной оболочкой. Сценарий оболочки всегда должен начинаться со строки shebang .Сценарий bash должен начинаться с #! / Usr / bin / env bash или #! , за которым следует путь к bash в вашей системе, обычно #! / Bin / bash .

Я не рассматривал ваш сценарий подробно, но есть вероятность, что он дает сбой, потому что вы используете конструкции bash, но встроенные установки Linux, такие как DD-wrt, обычно не включают bash, только BusyBox ash. Чтобы ваш скрипт работал с DD-wrt, придерживайтесь переносимых конструкций sh. Вы можете использовать контрольные комбинации (доступны в большинстве дистрибутивов Linux) для поиска конструкций, специфичных для bash.

Я заметил одну специфичную для bash конструкцию - это оператор == в условных выражениях, например ["$ HOST" == ""] . Переносимый способ записать это - ["$ HOST" = ""] или [-z "$ HOST"] . Аналогично ["$ MAC" = "$ MACTEMP"] .

Также всегда заключайте замену переменных в двойные кавычки, если вы не знаете, почему вам нужно их опускать . Ваш сценарий может сработать, если ваши данные никогда не содержат специальных символов оболочки, но не рассчитывайте на удачу, просто введите эти ".

1
28.01.2020, 01:07

Теги

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