Будет ли работать dd при клонировании с здорового образа на диск с поврежденными секторами?

Это означает, что вам придется сохранить текущее состояние активации.

Самый простой способ сделать это — создать файл для одного из состояний (, возможно, для состояния «включено» или «активировано» ), и удалить этот файл при входе в другое состояние (. ] "выключено" или "деактивировано" ).

Создание пустого файла выполняется с помощью touch filename, а проверка существования этого файла выполняется с помощью if [ -e filename ]; then...; fi. Удалите файл с помощью rm filename.

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

Если вы используетеbash:

#!/bin/bash

statefile=$HOME/.script.state

if [ -f "$statefile" ]; then
   . "$statefile"
fi

case $state in
    on) state=off ;;
    *)  state=on
esac

printf 'Current state is "%s"\n' "$state"

declare -p state >"$statefile"

Тестирование:

$ bash script.sh
Current state is "on"
$ bash script.sh
Current state is "off"
$ bash script.sh
Current state is "on"
$ bash script.sh
Current state is "off"

Сценарий сохраняет переменную stateв $HOME/.script.stateс помощью declare -p stateв bashв конце каждого запуска и считывает ее оттуда путем поиска этого файла в начале (, если файл существует ).

В конечном итоге этот файл будет выглядеть так:

declare -- state="off"

, который является результатом declare -p state, если $stateявляется строкой off.


С помощью /bin/shприведенный выше сценарий может быть записан как

#!/bin/bash

statefile=$HOME/.script.state

if [ -f "$statefile" ]; then
    read state <"$statefile"
fi

case $state in
    on) state=off ;;
    *)  state=on
esac

printf 'Current state is "%s"\n' "$state"

printf '%s\n' "$state" >"$statefile"

... просто заменив чтение и запись состояния на readи printf, что позволит сохранить только саму строку состояния в файле состояния.

1
13.08.2021, 23:13
0 ответов

Теги

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