[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now


Help with bash script.

Posted on 1999-01-03
Medium Priority
Last Modified: 2013-12-26
If I use the program cda I can do a:
cda -dev /dev/cdrom on
cda -dev /dev/cdrom toc

and get the output:

Disc ID: rock 910f850b
Ulf Lundell / Maria Kom Tillbaka - Live - Cd 3

 01 05:59  Laglvs
 02 05:48  Evangeline
 03 04:41  Rom i regnet
 04 05:28  Ute pe vdgen igen
 05 06:30  Dansa nu
 06 04:58  Oh la la
 07 07:24  67
 08 03:17  Min vandrande vdn
 09 10:43  Isabella
 10 06:13  Leng vdg hem
 11 05:12  Maria kom tilllbaka

Total Time: 66:15

How can I make a script that take the trac-names and put them into variabels.
I mean that the variable track01 shall be laglvs and track11 Maria kom tillbaka.

How can I solve this in bash?
Question by:n94magho
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2

Accepted Solution

hollandb earned 1400 total points
ID: 1295098
I have created a bash script that uses one external program: 'expr', the rest is totally bash.  Note that the variables only exist for the process (child) - they are lost when the script ends hence the parent does not have access to the variables.

This script reads from ./track_titles.txt, but will read from standard input be default if the filename is removed.

It reads a whole line at a time and breaks it up into three variables (track_num, track_time, track_title) using the space as a separator.  If there are more than two spaces, the rest of the line is automatically put into the third variable, in this case 'track_title'.  It then checks to see if the length of the track_num is two(2) characters.  If it is not, it ignores the whole line and continues with the next line.  If it is, it assigns 'trackXX=<track title>' and exports the variable.  I have issued a set command at the end of the script to prove that variables are actually exported.

# Allow input of track names and extract and print them.

while read track_num track_time track_title
        if [ `expr length "$track_num"` -eq 2 ]
                echo $track_num $track_title;
                export track$track_num=$track_title
done < './track_titles.txt'


Author Comment

ID: 1295099

Author Comment

ID: 1295100
Hmmmmm.... one comment...

How can I print the trackXX variables so I ven se that they hold the right value.... It seems to me that soemthing is wrong.

Expert Comment

ID: 1295101
I have played around with this a bit more and I think you will be happy with what I have come up with.
I have changed the script quite considerably and it doesn't use "expr", instead it uses a built in feature of bash to determine the length of a variable/array.  The code should be self-explanatory:

# Allow input of track names and extract and print them.

# declare an array called 'titles':
declare -a titles;
declare -i index=1;

while read track_num track_time track_title
        # ${#VAR} uses the builtin capabilities of bash
        # to determine "the length of 'VAR'":
        if [ ${#track_num} -eq 2 ]
                let index=$index+1;
done < './track_titles.txt'

# titles[@] means "the whole array";
# ${#titles[@]} means "the number of elements in the array".
# in this case, index = number of tracks.

# print song titles backwards to prove they can be accessed
# by using the appropriate subscript:
while [ $index -gt 0 ]
        echo track$index=${titles[$index]};
        let index=$index-1;


Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question