Фактически вы никогда не назначаете переменной конкретное имя файла. Что вы делаете, так это устанавливаете для переменной шаблон глобуса. Затем, когда вы передаете переменную в echo
, шаблон глобуса раскрывается, так что вы видите выдавленное имя вашего файла. Однако для переменной никогда не было задано конкретное имя файла.
Итак, вам нужен лучший способ получить имя файла. Что-то вроде:
#!/bin/bash
## Make globs that don't match anything expand to a null
## string instead of the glob itself
shopt -s nullglob
## Save the list of files in an array
files=( /some/file/path/$10AS_26x86_64_$2_*.bin )
## If the array is empty
if [ -z $files ]
then
echo "install archive does not exist."
exit
## If at least one file was found
else
## Take the first file
filename="${files[0]}"
echo "$filename"
fi
{
/usr/bin/expect << EOD
set timeout 20
spawn "${filename}"
expect {
"Press Enter to view the End User License Agreement" {
send "\r"
exp_continue
}
"More" {
send " "
exp_continue
}
"Do you accept the End User License Agreement?" {
send "y\r"
}
}
interact
expect eof
EOD
}
Способ использования dd
определяется тем, как создается файл .iso
.
The dd command just reads the contents of file bit by bit (well, block by block) and writes the data to specified device. If the input file is large enough every single bit of data on the usb stick will be overwritten.
Это правильно, но что, если я запустил dd if=/dev/sdb1 of=test.iso
при создании .iso
? Или, может быть, запустили что-то вроде dd if=/dev/sdb of=test.iso bs=1M seek=1
, из-за чего он пропустил первый 1M
данных?
dd
не заботится о базовой схеме разделов, это означает, что то, как вы ее используете, полностью зависит от структуры блочного устройства и данных, которые вы записываете.
Если вы dd
подключитесь к устройству, вы потеряете свободное место на USB-накопителе, так как DD перезапишет MBR/GPT.
Разделение вашего устройства может позволить записать образ в раздел, что позволит вам сохранить свободное место. Но вам нужно будет настроить ваш менеджер загрузки (grub? ), чтобы начать с этого раздела. Если вы разделите свой диск, у вас будет sdx1, sdx2,..., что позволит вам dd if=your.iso of=/dev/sdx1
или раздел, который вы хотите.
Проблема здесь в том, что вы хотите сделать это с установочным диском Windows, и это может быть проблемой. Если для установки Windows требуется DVD-диск, он может не загрузиться, или вам может потребоваться изменить этот образ, чтобы избежать этой проверки. В Linux все проще, так как многие дистрибутивы позволяют запускать сам образ, другим могут потребоваться некоторые хаки, чтобы иметь возможность иметь один USB с множеством дистрибутивов, с которых вы можете начать.