Friday, March 31, 2017

Bash: Scripting - Revised

#!/bin/bash
#
#
#
FILE=/homeb/d54712/sandbox/scripts/data.d/lorem.txt
exec 3< $FILE # Create a new File Descriptor for STDIN from file
function trimline()
{
        MAXLEN=$((LINELEN - 3))
        if [ "${#1}" -le $LINELEN  ]
        then
                echo "$1"
                echo "Width: ${#1}"
        else
                echo "${1:0:${MAXLEN}} \\ "
        fi
}

# STDIN from keyboard to get input for LINELEN
exec <&0
LINELEN=${1:-80} # if variable is undefined or null substitute with 80 (i.e ${var:-word})

# Redirect STDIN from FILE
exec <&3
while read myline
do
        trimline "$myline"
        #echo "$myline"
done




#debug
echo "LINELEN:$LINELEN"
echo "MAXLEN: $MAXLEN"




Results:
$ ./trimline.sh 30
Width: 0
rem ipsum dolor sit amet, c \
Morbi vestibulum sem in ege \
vehicula, eros ex dapibus a \
ante ipsum primis in faucib \
Maecenas porta pretium null \
tincidunt ut. Vivamus tempu \
lobortis. Phasellus quis mi \
ultricies nunc id imperdiet \
arcu tincidunt consectetur.
Width: 27
Width: 0
Phasellus urna ex, viverra  \
scelerisque elit id varius  \
Etiam at ligula at felis or \
Proin cursus, ipsum in vene \
vestibulum turpis sapien a  \
risus lectus, quis faucibus \
augue vitae, elementum nunc.
Width: 28
Width: 0
LINELEN:30
MAXLEN: 27

No comments:

Post a Comment