PDA

Bekijk de volledige versie : обрубаются строки в скрипте



cyrax
11-02-2007, 17:25
Привет всем,

нужна помощь. Написал скрипт и при попытке его прогнать (так и под -x) почему-то рубятся строки, назначаемые переменным. И это при том, что все запросы по назначению переменных работают отлично когда выполняются просто в command shell

Вот код ... правда он немного страшный - главный смысл - я хотел упростить процесс переназначения syslogd на другое место - а в результате усложнил себе жизнь ;)

Кто знает, почему режутся строки (команда отмечена жирным), выполняется внутри скрипта?



#!/bin/sh
# redirect-syslogd [-nocopy] <new syslog file> [other syslog options]
case "$1" in
"-nocopy") nocopyoldlog=1;shift;;
"-new") nocopyoldlog=1;ignorecur=1;shift;;
"-h") echo "redirect-syslogd [-nocopy|-new|-h] <new syslog target> [other syslog options]";exit;;
esac

if [ -z "$1" ]
then echo "Error! Syslogd target file is missing";exit
else touch "$1"||(echo "Error! Unable to write to the file: ", "$1";exit)
fi

cursyslogparams=`ps|sed -n 's/.*[s]yslogd[[:blank:]]*//p'|tail -n 1`
echo $cursyslogparams
if [ -n "$cursyslogparams" ]
then
cursyslogfile=`echo $cursyslogparams|sed 's/.*[[:blank:]]*-O[[:blank:]]//'|awk '{print $1}'`
elif [ -n "$ignorecur" ]
then echo "Error! Syslogd wasnt found";exit
else cursyslogfile=""
fi

if [ -n "$cursyslogfile" ]
then if [ "$cursyslogfile" = "$1" ]
then echo "Syslogd is already using this file: ", "$cursyslogfile";exit
fi
fi
logger "Syslogd redirection: start"
echo "Syslogd redirection: start"
killall syslogd 2>/dev/null
if [ -z "$nocopyoldlog" ]
then if [ -n "$cursyslogfile" ]
then
echo "------Begin of the old log------">>"$1"
echo "$cursyslogfile"
cat "$cursyslogfile">>"$1"
echo "------ End of the old log ------">>"$1"
fi
fi
if [ $# -le 1 ]
then newsyslogparams=`echo $cursyslogparams|sed 's/-O[[:blank:]]*[[:graph:]]*[[:blank:]]*//'`
else newsyslogparams="$*"
fi
syslogd -O $newsyslogparams
logger "Syslogd redirection: finish"
echo "Syslogd redirection: finish"