У меня короткий Баш скрипт для замены UUID в строке в файле:Как сохранить присутствие меток кавычек от ввода с помощью sed?
#!/bin/sh
alpha="0-9A-F"
uuidPtn="[$alpha]{8}-[$alpha]{4}-[$alpha]{4}-[$alpha]{4}-[$alpha]{12}"
ProductCode="\"ProductCode\" = \"8:{0059DDB5-D384-46F9-BBFD-0004A8C39732}\""
newguid=`uuidgen`
newguid="${newguid^^}"
cmd="echo $ProductCode | sed -r s/$uuidPtn/$newguid/"
echo "$ProductCode"
eval "$cmd"
Он производит почти правильный вывод, но с кавычками опущено:
"ProductCode" = "8:{0059DDB5-D384-46F9-BBFD-0004A8C39732}"
ProductCode = 8:{A4B1D092-1C56-44F3-B096-34B67A5F39B1}
Как я могу включить кавычки?
бы использовать одиночные кавычки в файле 'ProductCode = 'ProductCode "= ... 2}"' 'декларация ничего не меняет? – Aserre
ProductCode имеет правильное значение, как видно из вывода. –
Я проверил вас de, проблема заключалась в том, что вам нужны одинарные кавычки вокруг объявления 'cmd', иначе кавычки будут разворачиваться дважды (один во время объявления, один раз во время eval). – Aserre