Запуск сценария .sh с результатами Sudo в другом выводе

Я наблюдаю очень странное поведение в сценарии, над которым я работаю. У меня есть ловушка svn, которая запускается всякий раз, когда выполняется фиксация в репозитории svn . Он запускает команду sqsh, которая генерирует другой сценарий (checkout.sh), а затем выполняет этот сгенерированный сценарий. Если я просто запускаю сценарий вручную, я получаю такой результат для сгенерированного сценария:

/usr/bin/install -d /opt/www/targetRepo/svn/targetDir1; /usr/bin/svn checkout http://mysite.com/svn/sourceRepo/targetDir1 /opt/www/targetRepo/svn/targetDir1;
/usr/bin/install -d /opt/www/targetRepo/svn/targetDir2; /usr/bin/svn checkout http://mysite.com/svn/srcRepo/targetDir2 /opt/www/targetRepo/svn/targetDir2; 

Обратите внимание, как каждая строка заканчивается точкой с запятой.

Если я запускаю тот же сценарий, но перед ним / usr / bin / sudo -u myname

, то сгенерированный сценарий заменяет точку с запятой в конце каждой строки вертикальной чертой '|' персонаж. В результате, когда основной сценарий пытается на самом деле выполнить этот сгенерированный сценарий, он терпит неудачу с ошибкой «недопустимый конец файла».

Обновление Вот сценарии, которые я пытаюсь запустить:

sudo-hook.sh

#!/bin/bash

/usr/bin/sqsh -o ./checkout.sh -w 999999 -h -S myserver -D mydb -U dbuser -P apassword -C "select distinct '/usr/bin/install -d /opt/www/targetRepo/svn/'+cast(p.id as varchar(32) )+'; /usr/bin/svn checkout http://mysite.com/svn/srcRepo/'+cast(p.id as varchar(32) )+' /opt/www/targetRepo/svn/'+cast(p.id as varchar(32) ) from frame_skus as sku join products as p on p.id=sku.frame_id join frame_colors as c on c.id=sku.color_id join frame_sizes as s on s.id=sku.size_id join value_options as cc on c.color_code_id=cc.id join product_files as img on img.product_id=p.id  and img.color_id=c.id and img.dtype='FRAME_IMAGE' join brands as b on p.brand_id=b.id and b.id=69;"
./checkout.sh

checkout.sh (сгенерированный сценарий):

/usr/bin/install -d /opt/www/targetRepo/svn/31903; /usr/bin/svn checkout http://mysite.com/svn/31903 /opt/www/targetRepo/svn/31903|
/usr/bin/install -d /opt/www/targetRepo/svn/31904; /usr/bin/svn checkout http://mysite.com/svn/31904 /opt/www/targetRepo/svn/31904|
/usr/bin/install -d /opt/www/targetRepo/svn/31905; /usr/bin/svn checkout http://mysite.com/svn/31905 /opt/www/targetRepo/svn/31905|

Кто-нибудь может дать мне представление о том, что здесь происходит ?

0
29.04.2016, 19:25
1 ответ

Хорошо, я думаю, что нашел проблему. По-видимому, именно sqsh добавлял этих «|» персонажей. sqsh имеет стиль (-м)и кажется, что если вы не установите его явно, то по умолчанию он использует стиль 'bcp', который добавляет эти дополнительные символы.

Что я все еще хотел бы знать, так это то, почему он по умолчанию использует один стиль 'bcp' при запуске с sudo, но по умолчанию использует другой стиль 'horizontal' при запуске без sudo.

0
28.01.2020, 04:51

Теги

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