Вызов HereDoc внутри цикла Bash Shell?

Вы должны сначала сделать резервную копию текущего поврежденного раздела на какой-нибудь большой внешний диск

dd if=/dev/sdb2 of=/mountpoint/of/bigdisk/backup_of_sdb2.dd

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

Одним из способов исправления вручную может быть также сброс этого содержимого db2 на целый пустой внешний диск (на его /dev/sdX или /dev/sdX1 ? ), а затем изменить этот тип раздела на ntfs (с помощью fdisk )и использовать Windows, чтобы попытаться исправить это? (может восстановить некоторую потерянную структуру каталогов )...

И напоследок... всегда имейте резервные копии важных данных (на 2 локальных отдельных дисках, а также в одном удаленном месте на случай ограбления или пожара... ). делает эти события гораздо менее болезненными.

0
29.03.2021, 21:00
1 ответ

Вы можете объявить каждый блок кода Python с отступом локального столбца -1 в собственной функции Bash.

emitPy_Mode_4 () { cat <<'EOF'
Your python source
    goes here with
        any indentation you like
Just fine
EOF
}

Вы можете вызвать его в цикле Bash через стандартный ввод, например:

emitPy_Mode_4 | python3 -

или как здесь строка, например:

python3 - <<<"$( emitPy_Mode_4 )"

A Here Document либо полностью заключен в кавычки, либо полностью не заключен в кавычки (в зависимости от того, заключен ли в кавычки начальный маркер в <

Если HereDoc заключен в функцию, его можно разделить на разделы с разными кавычками, чтобы контролировать расширение. Необходимые переменные можно передать в функцию:

emitPy_Mode_4 () {  #.. Takes one filename argument.
cat <<'EOF'    #.. Preamble
Your python source
EOF
cat <<EOF      #.. Inject variable.
    myPathName = '${1}'
EOF
cat <<'EOF'    #.. Remainder.
    goes here with
        any indentation you like
Just fine
EOF
}

IIRC, раздел без кавычек может включать любую конструкцию оболочки, например расширение процесса, которое может вызывать любую другую функцию или внешнюю команду для вставки текста в HereDoc.

2
28.04.2021, 22:55

Теги

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