Home>

Here I have a script written in Bash:

#!/bin/sh
# /usr/lib64/sa/sa2
# (C) 1999-2012 Sebastien Godard (sysstat <at> orange.fr)
#
#@(#) sysstat-10.1.5
#@(#) sa2: Write a daily report
#
S_TIME_FORMAT=ISO ; export S_TIME_FORMAT
umask 0022
prefix=/usr
exec_prefix=/usr
# Add a trailing slash so that 'find' can go through this directory if it's a symlink
DDIR=/var/log/sa
SYSCONFIG_DIR=/etc/sysconfig
YESTERDAY=
DATE=`date ${YESTERDAY} +%d`
CURRENTFILE=sa${DATE}
CURRENTRPT=sar${DATE}
HISTORY=28
COMPRESSAFTER=31
ZIP="bzip2"
[ -r ${SYSCONFIG_DIR}/sysstat ] &
&
 . ${SYSCONFIG_DIR}/sysstat
if [ ${HISTORY} -gt 28 ]
then
    CURRENTDIR=`date ${YESTERDAY} +%Y%m`
    cd ${DDIR} || exit 1
    [ -d ${CURRENTDIR} ] || mkdir -p ${CURRENTDIR}
    # Check if ${CURRENTFILE} is the correct file created at ${DATE}
    # Note: using `-ge' instead of `=' since the file could have
    # the next day time stamp because of the file rotating feature of sadc
    [ -f ${CURRENTFILE} ] &
&
            [ "`date +%Y%m%d -r ${CURRENTFILE}`" -ge "${CURRENTDIR}${DATE}" ] || exit 0
    # If the file is a regular file, then move it to ${CURRENTDIR}
    [ ! -L ${CURRENTFILE} ]&
&
            mv -f ${CURRENTFILE} ${CURRENTDIR}/${CURRENTFILE} &
&
               ln -s ${CURRENTDIR}/${CURRENTFILE} ${CURRENTFILE}
    touch ${CURRENTDIR}/${CURRENTRPT}
    # Remove the "compatibility" link and recreate it to point to
    # the (new) current file
    rm -f ${CURRENTRPT}
    ln -s ${CURRENTDIR}/${CURRENTRPT} ${CURRENTRPT}
    CURRENTDIR=${DDIR}/${CURRENTDIR}
   else
    CURRENTDIR=${DDIR}
   fi
   RPT=${CURRENTDIR}/${CURRENTRPT}
   ENDIR=/usr/bin
   DFILE=${CURRENTDIR}/${CURRENTFILE}
   [ -f "$DFILE" ] || exit 0
   cd ${ENDIR}
   [ -L ${RPT} ] &
&
 rm -f ${RPT}
   ${ENDIR}/sar $* -f ${DFILE} > ${RPT}
   find ${DDIR} \( -name 'sar??' -o -name 'sa??' -o -name 'sar??.xz' -o -name 'sa??.xz'
   -o -name 'sar??.gz' -o -name 'sa??.gz' -o -name 'sar??.bz2' -o -name 'sa??.bz2' \) \
    -mtime +"${HISTORY}" -exec rm -f {} \;
   find ${DDIR} \( -name 'sar??' -o -name 'sa??' \) -type f -mtime +"${COMPRESSAFTER}" \
    -exec ${ZIP} {} \; > /dev/null 2>&
one
   #Remove broken links
   for f in `find ${DDIR} \( -name 'sar??' -o -name 'sa??' \) -type l`; do
    [ -e $f ] || rm -f $f
   done
   cd ${DDIR}
   rmdir [0-9]????? > /dev/null 2>&
one
   exit 0`

When running the script, the error "Unexpected end of the system indicators file" arrives. What could be causing this error? And how can I see at least on which line of code this error occurs? Thanks in advance for your help

$ sh -x /path/to/this/file

aleksandr barakin2022-02-15 05:00:12

Don't forget to convert line endings to Unix format.

0andriy2022-02-14 12:56:43