123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/bin/bash
- # Simple line count example, using bash
- #
- # Bash tutorial: http://linuxconfig.org/Bash_scripting_Tutorial#8-2-read-file-into-bash-array
- # My scripting link: http://www.macs.hw.ac.uk/~hwloidl/docs/index.html#scripting
- #
- # Usage: ./line_count.sh file
- # -----------------------------------------------------------------------------
- # Link filedescriptor 10 with stdin
- exec 10<&0
- # stdin replaced with a file supplied as a first argument
- exec < $1
- # remember the name of the input file
- in=$1
- # init
- file="current_line.txt"
- let count=0
- # this while loop iterates over all lines of the file
- while read LINE
- do
- # increase line counter
- ((count++))
- # write current line to a tmp file with name $file (not needed for counting)
- echo $LINE > $file
- # this checks the return code of echo (not needed for writing; just for demo)
- if [ $? -ne 0 ]
- then echo "Error in writing to file ${file}; check its permissions!"
- fi
- done
- echo "Number of lines: $count"
- echo "The last line of the file is: `cat ${file}`"
- # Note: You can achieve the same by just using the tool wc like this
- echo "Expected number of lines: `wc -l $in`"
- # restore stdin from filedescriptor 10
- # and close filedescriptor 10
- exec 0<&10 10<&-
|