while learning bash/ksh from a book. i came across an exercise that had a result i would love to understand.
When executing this script with bash -x to try to understand how it behaves (debugging) i noticed the line variable is number + filename. as this is the result of wc -c [file].
but as soon as the for loop sets the res variable it somehow strips the file name and only says res=23
(number result of wc -c) i can see it happening but don't really understand why ? i think i understand the for loop construct .. for i in xxx do what ever.. don't 100% understand the break in this construct i do know it's to break out of a nested loop.
this is the exercise script:
if [ ! $# -eq 2 ] ;then echo echo "usage: $0 <location> <FileName>" echo exit 1 fi TMPFILE=/tmp/count line=$(find "$1" -name "$2" -type f -print | tee $TMPFILE | wc -l) aant=$line nr=0 som=0 while [ $nr -lt "$aant" ] ; do nr=$(( nr +1 )) bestand=$(head -$nr $TMPFILE | tail -1) echo -n "$bestand" line=$(wc -c "$bestand") for woord in $line ; do res=$woord break done echo " $res" som=$(( som + res )) done if [ "$aant" -eq 0 ] ; then echo "No files found" else echo echo "In totaal $aant files take $som bytes of space" fi rm $TMPFILE exit 0