bash - delay expansion of variable


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
bash - delay expansion of variable

Hello -

I have a bash script which does some logging, and I'd like to include the line number of the echo statement that pipes into $LOGGER:

MYPID=$$
MYNAME=`basename $0`
LOGGER="/usr/bin/logger -t $MYNAME[$MYPID]($LINENO) -p daemon.error"
...
echo 'this is an entry into the log file' | $LOGGER

The problem is, $LINENO expands on the "LOGGER" line, and not the "echo" line. I know I could do a function and pass $LINENO to it every time I want to log, I can also escape the parens and call `eval $LOGGER` on every line.

Is there a tight way to do it with a pipe into a single variable, by delaying expansion of the $LINENO var until the echo pipes into $LOGGER?

Thanks!
# 2  
Code:
LOGGER="/usr/bin/logger -t $MYNAME[$MYPID](\$LINENO) -p daemon.error"

# 3  
Thanks cfajohnson, but that back slash prevents LINENO from ever being expanded:

joe@rose:~$ MYNAME=joe
joe@rose:~$ MYPID=$$
joe@rose:~$ LOGGER="/usr/bin/logger -t $MYNAME[$MYPID](\$LINENO) -p daemon.error"
joe@rose:~$ echo 'test' | $LOGGER
joe@rose:~$ tail -1 /var/log/daemon.log
Feb 18 01:40:27 rose joe[26479]($LINENO): test

Am I missing something?

Last edited by scandora; 02-18-2009 at 05:59 AM.. Reason: correction
# 4  
Code:
LOGGER="/usr/bin/logger -t $MYNAME[$MYPID]\(\$LINENO\) -p daemon.error"
echo test | eval "$LOGGER"

Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #67
Difficulty: Medium
IT security or cybersecurity controls are based on a combination of three types of security controls, (1) physical controls, (2) logical controls and (3) administrative controls.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash variable expansion in awk script

Hello, I need to split a file into two of different locations by re-direction in awk. cat infle aaa 1 3 bbb 2 4 aaa 3 3 bbb 4 4 aaa 5 3 bbb 6 4 cat /storage/tmp/group_a.gtf aaa 1 3 aaa 3 3 aaa 5 3 cat /storage/tmp/group_b.gtf bbb 2 4 bbb ... (2 Replies)
Discussion started by: yifangt
2 Replies

2. Shell Programming and Scripting

Bash Parameter Expansion

#!/bin/bash SNMPW='/usr/bin/snmpwalk' while read h i do loc=$($SNMPW -v3 -u 'Myusername' -l authPriv -a SHA -A 'Password1' -x AES -X 'Password2' $i sysLocation.0 2>/dev/null) loc=${loc:-" is not snmpable."} loc=${loc##*: } loc=${loc//,/} echo "$i,$h,$loc" done < $1 My question is ... ... (1 Reply)
Discussion started by: sumguy
1 Replies

3. Shell Programming and Scripting

Bash Parameter Expansion

I have made the following examples that print various parameter expansions text: iv-hhz-sac/hpac/hhz.d/iv.hpac..hhz.d.2016.250.070018.sac (text%.*): iv-hhz-sac/hpac/hhz.d/iv.hpac..hhz.d.2016.250.070018 (text%%.*): iv-hhz-sac/hpac/hhz (text#*.): d/iv.hpac..hhz.d.2016.250.070018.sac... (2 Replies)
Discussion started by: kristinu
2 Replies

4. Shell Programming and Scripting

Bash variable expansion

Hello. The file /etc/fstab contains UUID=957c3295-9944-1593-82e2-2b90dede4312 / ext4 noatime,discard,acl,user_xattr 1 1 I fill a variable SOME_LINE=$( cat /etc/fstab | grep \/\..*ext4 | grep noatime,discard )echo $SOME_LINE... (3 Replies)
Discussion started by: jcdole
3 Replies

5. Shell Programming and Scripting

Bash expansion

Hello. I cannot write a command without using eval. Any help is welcome Note 1 : What does the function SOMETHING has no importance. Note 2 : What does the command find has no importance. It is an expansion variable problem : where to put or or or anythings else What works (FILTRE_1... (8 Replies)
Discussion started by: jcdole
8 Replies

6. Shell Programming and Scripting

Bash shell expansion help

This is what I have in my directory. $ ls test1.txt test2.txt test3.txt test4.txt test5.txt test_script.sh This is what my shellscript looks like. #!/bin/bash for filename in /shell_expansion/*.txt; do for ((i=0; i<=3; i++)); do echo "$filename" ... (5 Replies)
Discussion started by: cokedude
5 Replies

7. Shell Programming and Scripting

BASH Execution Delay / Speedup

I have a BASH script that runs a continuous loop, reading a line from a file, and then spawning a background process to use it. I've placed "date" commands inside it to see where it's slowing down, and everything inside -- including reading the line from the file -- is fast, but the loop bogs... (34 Replies)
Discussion started by: gmark99
34 Replies

8. Shell Programming and Scripting

delay variable expansion

Hi forum, in my bash script I've many lines executing commands with redirection to log files. ... xyz_cmd 2>&1 > $BASENAME.$LINENO The trailing part of these lines doesn't look nice and I like to put it into a variable. The (not working) idea is something like that ... (3 Replies)
Discussion started by: wolfi089
3 Replies

9. Shell Programming and Scripting

Bash variable delayed expansion?

i write a batch file , here is the content. dirname='date +%Y-%m-%d' mkdir dirname but it doen's work, it just create a folder named date and +%Y-%m-%d. i have tried run the command seperately in the bash prompt. after the first sentence executed , i use $dirname to watch the value of... (4 Replies)
Discussion started by: premotheus
4 Replies

10. Shell Programming and Scripting

Calculating delay time - bash

Hi, I am having the following problem. test > hourOfDay=06 ; delayTime=$(((9-$hourOfDay)*60)) ; echo $delayTime 180 test > hourOfDay=07 ; delayTime=$(((9-$hourOfDay)*60)) ; echo $delayTime 120 test > hourOfDay=08 ; delayTime=$(((9-$hourOfDay)*60)) ; echo $delayTime bash: (9-08: value... (5 Replies)
Discussion started by: jbsimon000
5 Replies

Featured Tech Videos