URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6565
[ Назад ]

Исходное сообщение
"Проблема со спецсимволами и переносами строк"

Отправлено universite , 26-Июн-07 06:39 
Имеем:

printf " <VirtualHost \\\n >> $file
printf "                        69.159.46.73:80 \\\n" >> $file
...

Нужно получить файл с:


<VirtualHost \
                  69.159.46.73:80 \
...

Есть идеи, как это сделать?


Содержание

Сообщения в этом обсуждении
"Проблема со спецсимволами и переносами строк"
Отправлено NuINu , 26-Июн-07 09:33 
>Имеем:
>
 
>printf " <VirtualHost \\\n >> $file
>printf "                        69.159.46.73:80 \\\n" >> $file
>...
>

>
>Нужно получить файл с:
>
 
><VirtualHost \
>            
>      69.159.46.73:80 \
>...
>

>
>Есть идеи, как это сделать?
хм, вот так подойдет?
name=test1.txt

echo " <VirtualHost \\" >> $name
echo "              69.159.46.73:80 \\" >> $name

или ты некий код собираешься на шеле парсить и интерпретировать?



"Проблема со спецсимволами и переносами строк"
Отправлено universite , 26-Июн-07 17:00 

>echo " <VirtualHost \\" >> $name
>echo "              69.159.46.73:80 \\" >> $name

тогда мне для второй строчки надо отступы....


"Проблема со спецсимволами и переносами строк"
Отправлено idle , 26-Июн-07 10:43 
>Имеем:
>
 
>printf " <VirtualHost \\\n >> $file
>printf "                        69.159.46.73:80 \\\n"
>...
>

>
>Нужно получить файл с:
>
 
><VirtualHost \
>            
>      69.159.46.73:80 \
>...
>

>
>Есть идеи, как это сделать?
printf " <VirtualHost \\\n\t\t69.159.46.73:80 \\\n" >> $file


"Проблема со спецсимволами и переносами строк"
Отправлено universite , 26-Июн-07 16:29 

>>Есть идеи, как это сделать?
>printf " <VirtualHost \\\n\t\t69.159.46.73:80 \\\n" >> $file

Получим:


<VirtualHost \n                69.159.46.73:80 \n

Еще раз повторяю, вновь созданный файл еще будет парсить с десяток внешних скриптов, и любое отклонение в синтаксисе может привести к неработе.


"Проблема со спецсимволами и переносами строк"
Отправлено NuINu , 26-Июн-07 16:41 
>
>>>Есть идеи, как это сделать?
>>printf " <VirtualHost \\\n\t\t69.159.46.73:80 \\\n" >> $file
>
>Получим:
>
 
><VirtualHost \n          
>     69.159.46.73:80 \n
>

>
>Еще раз повторяю, вновь созданный файл еще будет парсить с десяток внешних
>скриптов, и любое отклонение в синтаксисе может привести к неработе.

вы тут вообще какой язык обсуждаете? %)


"Проблема со спецсимволами и переносами строк"
Отправлено universite , 26-Июн-07 17:02 

>вы тут вообще какой язык обсуждаете? %)

В заголовке темы я указал - Shell скрипты.
А вы что подумали?


"Проблема со спецсимволами и переносами строк"
Отправлено NuINu , 26-Июн-07 17:44 
>
>>вы тут вообще какой язык обсуждаете? %)
>
>В заголовке темы я указал - Shell скрипты.
>А вы что подумали?

да так, просто printf в разных языках встречается :)
ну и тогда чем вас эхо не устраивает? у меня вроде выводит то что вам надо.


"Проблема со спецсимволами и переносами строк"
Отправлено universite , 26-Июн-07 17:47 

>да так, просто printf в разных языках встречается :)
>ну и тогда чем вас эхо не устраивает? у меня вроде выводит
>то что вам надо.

Табы в эхо тоже пашут?


"Проблема со спецсимволами и переносами строк"
Отправлено jd , 26-Июн-07 19:15 
>Табы в эхо тоже пашут?

Если с ключём -e, то echo должно \t понимать. Или вы о чём? Вообще, чем вам ваш собственный вариант с printf не нравится?


"Проблема со спецсимволами и переносами строк"
Отправлено universite , 26-Июн-07 19:37 
>>Табы в эхо тоже пашут?
>
>Если с ключём -e, то echo должно \t понимать. Или вы о
>чём? Вообще, чем вам ваш собственный вариант с printf не нравится?
>
Так не работает printf!
Больше двух символов "\" он игнорирует.


"Проблема со спецсимволами и переносами строк"
Отправлено universite , 26-Июн-07 23:01 
>>>Табы в эхо тоже пашут?
>>
>>Если с ключём -e, то echo должно \t понимать.

Этим и обошлось. Топик считать закрытым.


"Проблема со спецсимволами и переносами строк"
Отправлено jd , 27-Июн-07 06:19 
>Так не работает printf!
>Больше двух символов "\" он игнорирует.

Да ничего он не игнорирует... Просто в приведённом в самом начале примере кода используются двойные кавычки и шелл обрабатывает бэкслэши внутри них. Надо писать либо

printf ' <VirtualHost \\\n' >> $file
printf '                        69.159.46.73:80 \\\n' >> $file

либо

printf " <VirtualHost \\\\\\n" >> $file
printf "                        69.159.46.73:80 \\\\\\n" >> $file

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

А вообще, вопрос сформулирован как-то... долго не мог понять, в чём собственно проблема.


"Проблема со спецсимволами и переносами строк"
Отправлено universite , 27-Июн-07 06:52 
>>Так не работает printf!
>>Больше двух символов "\" он игнорирует.
>
>Да ничего он не игнорирует... Просто в приведённом в самом начале примере
>кода используются двойные кавычки и шелл обрабатывает бэкслэши внутри них. Надо
>писать либо

>printf " <VirtualHost \\\\\\n" >> $file
>printf "                        69.159.46.73:80 \\\\\\n" >> $file

Спасибо, сделал себе заметку.
Но скрипт уже сдал, используя echo -e