Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Dynamic variables in bash 1

Status
Not open for further replies.

neuralnode

Technical User
Sep 12, 2007
59
0
0
PL
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!
 
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
 
In Korn shell there is a difference between
Code:
function myfunc {
}
and
Code:
myfunc() {
}
 
Thanx, people!

@SamBones:
Your solution works perfectly, thx!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top