if [ $# -eq 1 ]; then cat $1 | (while read x ; do echo $x; let y=y+1; done echo "Number of lines is $y") y=0 while read z ; do echo $z; let y=y+1; done < $1 echo "Number of lines is $y" elif [ $# -eq 0 ]; then echo "Enter lines:Ctrl-D to quit" while read x; do echo $x; let y=$y+1; done echo "Number of lines is $y" fi