Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ################# this script creates an outfile with "val" number of lines of digits with the columns aligned . val can be set to what you want
- ################# but formating only works to 999 so far , but its eay to extend,
- ################# WARNING: you will still need to edit the outfile to add or remove the final last digits to the desired final number
- ################# since this script cant perfectly write to 64,128,256,512... and such
- ################# mike , undergrad, friday,4th,2011.
- ################# hope it makes your work easier!!
- if [ $# -eq 0 ]
- then
- echo " "
- fi
- myarray=(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20)
- count=0
- n=0
- val=25 ######### change this to the number of lines you want ie if 1..50 , val~3 since there are
- ######### roughly five lines of digits
- echo -n " even or odd ? "
- read -e TYPE
- if [ "$TYPE" = "even" ]
- then let type=2
- else let type=1
- fi
- tens=99
- hundreds=999 ######### you would need to add other variables like this to extend column alignment to greater than 999
- i=0
- if [ "$type" -eq 2 ]; then ########### for the even list of digits
- echo >> outfile$type
- for i in ${myarray[@]}
- do
- if (( ("$i" % 2) == "0" )); then
- sed '$s/$/ '$i'/' -i outfile$type
- # echo $i
- if [ "${myarray[$i]}" -gt "10" ] ; then
- sed '$s/$/ /' -i outfile$type
- else sed '$s/$/ /' -i outfile$type ######this adjusts the space between the ones digits , space is added or removed bbetween the forward slashes
- fi
- fi
- done
- echo >> outfile$type
- while [ $n -le $val ]
- do
- for i in ${myarray[@]}
- do
- myarray[$count]=`expr $i + 20`
- ((count++))
- done
- count=0
- for i in ${myarray[@]}
- do
- if (( ("$i" % 2) == "0" )) ; then ################ check if its odd or even
- sed '$s/$/ '$i'/' -i outfile$type
- if [ "${myarray[0]}" -le "$tens" ] ; then
- sed '$s/$/ /' -i outfile$type ######### this adjusts space between the tens digits to be aligned with the ones digits
- elif [ "${myarray[0]}" -le "$hundreds" ]; then
- sed '$s/$/ /' -i outfile$type ######### this adjusts the space between the hundreds digits to be aligned with the ones & tens
- ######## you would add such elifs from here to extend the column alignment beyond 999
- else
- sed '$s/$/ /' -i outfile$type ######## adjusts space after hundreds
- fi
- fi
- done
- echo >> outfile$type
- let n++
- done
- else ############## for odd numbers
- echo >> outfile$type
- for i in ${myarray[@]}
- do
- if (( ("$i" % 2) != "0" )); then
- sed '$s/$/ '$i'/' -i outfile$type
- if [ "${myarray[$i]}" -gt "10" ]; then
- sed '$s/$/ /' -i outfile$type
- else sed '$s/$/ /' -i outfile$type ######this adjusts the space between the ones digits , space is added or removed bbetween the forward slashes
- fi
- fi
- done
- echo >> outfile$type
- while [ $n -le $val ]
- do
- for i in ${myarray[@]}
- do
- myarray[$count]=`expr $i + 20`
- ((count++))
- done
- count=0
- for i in ${myarray[@]}
- do
- if (( ("$i" % 2) != "0" )) ; then ################ check if its odd or even
- sed '$s/$/ '$i'/' -i outfile$type
- if [ "${myarray[0]}" -le "$tens" ] ; then
- sed '$s/$/ /' -i outfile$type ######### this adjusts space between the tens digits to be aligned with the ones digits
- elif [ "${myarray[0]}" -le "$hundreds" ]; then
- sed '$s/$/ /' -i outfile$type ######### this adjusts the space between the hundreds digits to be aligned with the ones & tens
- ######## you would add such elifs from here to extend the column alignment beyond 999
- else
- sed '$s/$/ /' -i outfile$type ######## adjusts space after hundreds
- fi
- fi
- done
- echo >> outfile$type
- let n++
- done
- fi
- this is the error message thought the script does what its intended to do:
- ./Onetofive: line 40: [: : integer expression expected
- funny thing is that it only gives the error message when i choose the "even"
- choice , but still does what its intended, the "odd" does not give any error message
- i'v highlighted line 40
- here is what it gives with "set -x"
- + ./Onetofive
- even or odd ? even
- ./Onetofive: line 40: [: : integer expression expected
- ++ echo -ne '\033]0;mike@localhost:~/work/worksub/scripts'
- + for i in '${myarray[@]}'
- + (( (15 % 2) == 0 ))
- + for i in '${myarray[@]}'
- + (( (16 % 2) == 0 ))
- + sed '$s/$/ 16/' -i outfile2
- + '[' 17 -gt 10 ']'
- + sed '$s/$/ /' -i outfile2
- + for i in '${myarray[@]}'
- + (( (17 % 2) == 0 ))
- + for i in '${myarray[@]}'
- + (( (18 % 2) == 0 ))
- + sed '$s/$/ 18/' -i outfile2
- + '[' 19 -gt 10 ']'
- + sed '$s/$/ /' -i outfile2
- + for i in '${myarray[@]}'
- + (( (19 % 2) == 0 ))
- + for i in '${myarray[@]}'
- + (( (20 % 2) == 0 ))
- + sed '$s/$/ 20/' -i outfile2
- + '[' '' -gt 10 ']'
- Onetofive: line 40: [: : integer expression expected
- + sed '$s/$/ /' -i outfile2
- + echo
- + '[' 0 -le 5 ']'
- everything seems to go ok until ${myarray[@]} seems to evaluate to an empty '' how does does that happen? and why just for "even" the array just has digits 1..20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement