santner Posted January 9, 2005 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 Link to comment Share on other sites More sharing options...
aru Posted January 9, 2005 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 Link to comment Share on other sites More sharing options...
aru Posted January 9, 2005 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 Link to comment Share on other sites More sharing options...
santner Posted January 10, 2005 Author Share Posted January 10, 2005 awesome, exactly what I was looking for. I prefer the array style, very solid code. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now