×
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Dynamic variables in bash

Dynamic variables in bash

Dynamic variables in bash

(OP)
Hi All,

I would appreciate some advice on how to handle dynamic variables in a bash script.

Right now I use the following function, which is called every time I set new variables "DATAL", "STEP", and "ACTION".

vrefresh() {
    DATAL=`date +%Y-%m-%d\ \|\ %H:%M`
    OKMSG="$DATAL: $STEP, action $ACTION - completed successfully."
    ERMSG="$DATAL: $STEP, action $ACTION - failed!"
    }


What I want to accomplish is to get rid of the necessity to use this function, and just call $DATAL dynamically.
Normally, if the function is not called, the $DATAL variable will always be just as it was declared for the first time - which of course is not what I want, as you may imagine.

The question is: How to set it dynamically, so that it gets updated without having to declare it anew before every entry in the script?

Also, I wanted to declare only once the variables $OKMSG and $ERMSG, while the variables $STEP and $ACTION would change in consecutive parts of the script, e.g.

#!/bin/bash

## Global vars

LOGFILE=/tmp/logfile.txt
DATAL=`date +%Y-%m-%d\ \|\ %H:%M`
OKMSG="$DATAL: $STEP, action $ACTION - completed successfully."
ERMSG="$DATAL: $STEP, action $ACTION - failed!"


## Proper Script

STEP="Step 1"
ACTION="1.1: updating file.txt"

if <some argument>
     <some operations>
     echo "$DATAL: $OKMSG" >> $LOGFILE
else
     echo "$DATAL: $ERMSG" >> $LOGFILE
fi


Any help appreciated.
Thanx!
 

RE: Dynamic variables in bash

How about this...

CODE

#!/bin/bash

## Global vars

LOGFILE=/tmp/logfile.txt
DATAL='`date +%Y-%m-%d\ \|\ %H:%M`'
OKMSG='$STEP, action $ACTION - completed successfully.'
ERMSG='$STEP, action $ACTION - failed!'


## Proper Script

STEP="Step 1"
ACTION="1.1: updating file.txt"

if <some argument>
     <some operations>
     eval echo "$DATAL : $OKMSG" >> $LOGFILE
else
     eval echo "$DATAL : $ERMSG" >> $LOGFILE
fi
 

RE: Dynamic variables in bash

In Korn shell there is a difference between

CODE

function myfunc {
}
and

CODE

myfunc() {
}

RE: Dynamic variables in bash

(OP)
Thanx, people!

@SamBones:
Your solution works perfectly, thx!

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login


Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close