Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Экранирование спецсимволов [Решено]  (Прочитано 341 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн newhk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Народ, приветствую!
Решил немного автоматизировать процесс выпуска комплекта ключей и настроек для OpenVPN
Сделала скрипт, но столкнулся с проблемой, которую никак не могу осилить.

Кусок скрипта:
echo "WHERE /R c:\\users install.bat > %localappdata%\\temp\\1234.txt" >> $c
echo "set /p pth=<%localappdata%\\temp\\1234.txt" >> $c
echo "set pth=%pth:~0,-12%" >> $c
echo "%pth%\openvpn-install-2.4.8-I602-Win10.exe /S /SELECT_SHORTCUTS=1 /D=\"c:\\program files\\openvpn\\config\" /SELECT_OPENVPN=1 /SELECT_TAP=1 /SELECT_OPENVPNGUI=1 /SELECT_ASSOCIATIONS=1 /SELECT_PATH=1" >> $c
echo "copy /y %pth%\\$user_name.crt \"c:\\program files\\openvpn\\config[color=black]\\"[/color] >> $c
echo "copy /y %pth%\\$user_name.key \"c:\\program files\\openvpn\\config[color=black]\\"[/color] >> $c
echo "copy /y %pth%\\$user_name.ovpn \"c:\\program files\\openvpn\\config[color=black]\\"[/color] >> $c
echo "copy /y %pth%\\ca.crt \"c:\\program files\\openvpn\\config[color=black]\\"[/color] >> $c
echo "copy /y %pth%\\ta.key \"c:\program files\openvpn\config[color=black]\\"[/color] >> $c

В результате, в BAT-файле, получается так:
WHERE /R c:\users install.bat > %localappdata%\temp\1234.txt
set /p pth=<%localappdata%\temp\1234.txt
set pth=%pth:~0,-12%
%pth%\openvpn-install-2.4.8-I602-Win10.exe /S /SELECT_SHORTCUTS=1 /D="c:\program files\openvpn" /SELECT_OPENVPN=1 /SELECT_TAP=1 /SELECT_OPENVPNGUI=1 /SELECT_ASSOCIATIONS=1 /SELECT_PATH=1
copy /y %pth%\qazxsw.key "c:\program files\openvpn\config\
copy /y %pth%\qazxsw.crt "c:\program files\openvpn\config\
copy /y %pth%\ca.crt "c:\program files\openvpn\config\
copy /y %pth%\ta.key "c:\program files\openvpn\config\
copy /y %pth%\qazxsw.ovpn "c:\program files\openvpn\config\

Мне нужно, чтобы в конце вставляемого текста, было сочетание спецсимволов \"
Если оставлять как есть, то в конце вставляемого текста нет двойных кавычек ( " ).
Как сделать, что бы кавычка появилась? как эту группу спецсимволов надо экранировать?
« Последнее редактирование: 03 Май 2020, 06:10:31 от zg_nico »

Оффлайн xub

  • Забанен
  • Активист
  • *
  • Сообщений: 284
  • If it ain't broke, don't fix it
    • Просмотр профиля
Re: Экранирование спецсимволов
« Ответ #1 : 03 Апрель 2020, 17:02:35 »
Попробуйте, newhk, вот эти варианты, по быстрому написал личные кривые комментарии. Это не исчерпывающий, скорее всего перечень, но много чем может помочь.
(Нажмите, чтобы показать/скрыть)
Сейчас времени нет, вечером, если что я чуть плотнее посмотрю что конкретно экранировать, я не специалист, быстро у меня не получается😞…
2020 Apr 03; 10:02 AM
https://webhamster.ru/site/page/index/articles/projectcode/181 LoLo Switcher. Конфигурирование… Рекомендую!!! Кардинально может решить проблемы переключения раскладки…

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4706
  • Capture the truth
    • Просмотр профиля
Re: Экранирование спецсимволов
« Ответ #2 : 03 Апрель 2020, 17:04:53 »
printf %s\\n 'copy /y %pth%\ta.key "c:\program files\openvpn\config\"'

Код: (txt) [Выделить]
printf %s\\n "copy /y %pth%\ta.key \"c:\program files\openvpn\config\\\""
« Последнее редактирование: 03 Апрель 2020, 17:11:59 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн newhk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Экранирование спецсимволов
« Ответ #3 : 03 Апрель 2020, 17:43:08 »
ALiEN175,xub, спасибо!

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Re: Экранирование спецсимволов
« Ответ #4 : 03 Апрель 2020, 17:58:53 »
newhk,
В винде работает скрипт? Просто если откроете в блокноте такой скрипт, то все будет в одну строку потому что окончание строк должно быть \r\n а не \n.

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1175
    • Просмотр профиля
Re: Экранирование спецсимволов
« Ответ #5 : 03 Апрель 2020, 21:16:14 »
в блокноте такой скрипт, то все будет в одну строку
уже нет
конечно, может и не работать, но откроется правильно
Debian Testing (Gnome), Ubuntu Server 18.04

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Экранирование спецсимволов
« Ответ #6 : 04 Апрель 2020, 12:58:33 »
newhk, Чтобы не писать безумное количество повторяющихся переадресаций (e.g. >> $c) существует команда
Код: (bash) [Выделить]
exec 1>>$cДля написания многострочных коментариев/передачи текстов существует формат HEREDOC:
Код: (bash) [Выделить]
cat >>$c <<\EOF
WHERE /R c:\users install.bat > %localappdata%\temp\1234.txt
set /p pth=%localappdata%\temp\1234.txt

copy /y %pth%\ta.key "c:\program files\openvpn\config"
EOF
без всякого "экранирования"
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.09 секунд. Запросов: 25.