Копирование данных из виртуальной машины KVM в файловую систему хоста

Резюме :Вероятно, где-то в вашем коде есть echo $p. Вам нужно удвоить -цитату $p.


Нет, *не считается командой ls. Однако он рассматривается как шаблон подстановки имени файла из-за того, что он используется без кавычек где-то (, а не в коде, показанном в вопросе )

.

Необходимо соблюдать осторожность при назначении и использовании значения pи использовать соответствующие кавычки для защиты строки.

Шаблоны подстановки имен файлов здесь не раскрываются -строки:

$ cat <<< *
*

Таким образом, нет ничего плохого в использовании $pбез кавычек в вызове sed. Однако почти всегда лучше указывать расширения переменных в кавычках. См. также использование $fnameбез кавычек в вашем тесте. Это должно быть двойное цитирование наверняка.

Вы говорите, что скрипт выводит текст

>= (short)BigBlock  file1 file2 file3 DISK_SIZE + Size)

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

echo $p

где-то еще в сценарии.

Опять же, используйте двойные кавычки вокруг$p:

echo "$p"

Таким образом, вы не даете оболочке выполнить подстановку имени файла на его значение (расширение*).

Как правило, используйте echoтолько для статических строк и используйте printfдля переменных данных:

printf '$p is "%s"\n' "$p"

В связи с последним пунктом:Почему printf лучше, чем echo?

0
30.10.2019, 09:39
1 ответ

Вам следует рассмотреть возможность использования общего доступа к папкам через virtio(https://wiki.qemu.org/Documentation/9psetup). Хотя это требует добавления параметров времени выполнения для включения поддержки qemu и 9P в ядре вашего хоста (, в ядрах Debian это включено как модули ).

2
28.01.2020, 02:29

Теги

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