santner Posted January 9, 2005 Report Share Posted January 9, 2005 Bash is awesome, the only problem I have is that I have yet to find a simple way to read a basic text file from within a bash script one line at a time. For example, say my text file contains: 'Christmas Eve' 'Christmas Morning' 'New Years Eve' So from my bash script I would like to be able to read each entire line, one at a time and save it to a variable within the script. I have googled and still can't find the answers. Please help! :D Quote Link to comment Share on other sites More sharing options...
aru Posted January 9, 2005 Report Share Posted January 9, 2005 At first thought I can type two ways, I prefer the former because it doesn't use external commands: while read line; do echo $line # or whaterver you want to do with the $line variable done < FILE or cat FILE | while read line; do echo $line # or whaterver you want to do with the $line variable done hth Quote Link to comment Share on other sites More sharing options...
aru Posted January 9, 2005 Report Share Posted January 9, 2005 (edited) Here is another example that has come up to my mind, this time I'm using the Field separator variable (IFS) set to "new line", and an array to store each line of the file into a field of an array named "lines": old_IFS=$IFS IFS=$'\n' lines=($(cat FILE)) # array IFS=$old_IFS hence you can call each line by asking for its relative number: echo ${line[4]} # will echo line number 4 (line numbering start with 0) echo ${line[@]} # will print all the lines. echo ${line[#]} # will print the size of the array (the total line numbering) there are many other ways, just use the one that better fits your needs hth Edited January 9, 2005 by aru Quote Link to comment Share on other sites More sharing options...
santner Posted January 10, 2005 Author Report Share Posted January 10, 2005 awesome, exactly what I was looking for. I prefer the array style, very solid code. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.