Опция БАКАЛАВРА НАУК может вызвать противоречивость данных с dd?

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

Примечание: Также есть длинная форма коммутатора -k , SET -O ключевое слово .

Пример

$ cat cmd1.bash 
#!/bin/bash

echo $VARCMD

Теперь, если I SET -K :

$ set -k; ./cmd1.bash VARCMD="hi"; set +k
hi

, но если я просто должен был запустить вышеупомянутый скрипт:

$ ./cmd1.bash 

$

Что делает экспорт?

$ help export
...
Marks each NAME for automatic export to the environment of subsequently
executed commands.  If VALUE is supplied, assign VALUE before exporting.
...

Так что, если мы должны были добавить Экспорт | GREP VAR к нашему сценарию, как так:

$ cat cmd2.bash 
#!/bin/bash

echo $VARCMD
export | grep VAR

, и мы снова провели наши вышеуказанные тесты:

$ set -k; ./cmd2.bash VARCMD="hi"; set +k
hi
declare -x VARCMD="hi"

, но без SET -K :

$ ./cmd2.bash 

$

SO SET -K позволяет нам временно экспортные переменные в массу.

Другой пример

$ cat cmd3.bash 
#!/bin/bash

echo $VARCMD1
echo $VARCMD2
export | grep VAR

, когда мы устанавливаем несколько переменных, которые они все экспортируются:

$ set -k; ./cmd3.bash VARCMD1="hi" VARCMD2="bye"; set +k
hi
bye
declare -x VARCMD1="hi"
declare -x VARCMD2="bye"

Итак, он просто впрыскивает все переменные среды?

--k делает очень явную вещь здесь. Это только экспортирующие переменные, которые были включены в командную строку, когда была выполнена команда.

Пример

Скажем, я установил эту переменную:

$ VARCMD1="hi"

Теперь, когда мы запускаем ту же команду varcmd1 = "hi" :

$  set -k; ./cmd3.bash VARCMD2="bye"; set +k

bye
declare -x VARCMD2="bye"

, но почему это существует?

Я нашел Этот источник, который немного объясняет эту функцию, под названием: «Строки назначения параметров ключевых слов». Примечание: У URL-адрес источника используются IP-адрес, поэтому я не могу ссылаться на него прямо здесь на SE.

http://140.120.7.21/OpenSystem2/SoftwareTools/node16.html

При программировании на любом языке переменная и его значение прохождения имеют решающее значение для написания надежного кода. Рядом с целочисленными и вариальными типами Array все другие переменные оболочки принимают строки в качестве их значений. Говоря о языке программирования Shell,Чтобы быть последовательным, мы предпочитаем фразу «параметр ключевых слов». Вот несколько очков, которые необходимо осмотреть при назначении значений параметрам ключевых слов:

  • , чтобы избежать любого неожиданного эффекта, всегда поместите подстроку назначения параметров перед командной строкой.

    В оболочке B назначенные значения параметров ключевых слов будут сохраняться в (локальных) переменных оболочки. В Bash и KSH присвоенные строки параметра ключевых слов предыдущие команды не будут сохранены в переменных оболочки. Они влияют только на непосредственную раздумку подпроцесс для выполнения текущей команды. Линейка параметров параметров ключевых параметров в одиночку не работает в (локальные) переменные оболочки. Строки назначения параметров ключевых слов также могут отображаться как аргументы с псевдонимами, объявлению, наборами, экспортами, чтенно и локальными встроителями. [Раздел 3.4 Рукового руководства Bash]

  • Строки назначения параметров ключевых слов будут рассматриваться как аргументы для выполнения команды, если они размещаются после имени команды.

  • Параметры ключевых слов могут быть манипулированы командой set.
1
22.01.2015, 13:55
1 ответ

Лучше всего выполнить MD5-хэш на всех файлах перед резервным копированием, а затем выполнить восстановление и проверить MD5-хэши на соответствие им.

dd if=imagefile.img of=/dev/sda1 bs=4M

Вы даже можете попробовать 16M или больше. Просто не забывайте время от времени проверять MD5 хэши.

Несоответствие данных может быть вызвано множеством различных вещей, я сомневаюсь, что сама опция BS вызовет их, обычно это зависит от того, что машина делает во время резервного копирования, что может привести к несовместимости данных.

0
28.01.2020, 01:48

Теги

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