02-18-2009
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!
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
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
2. Shell Programming and Scripting
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
3. Shell Programming and Scripting
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
4. Shell Programming and Scripting
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
5. Shell Programming and Scripting
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
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
7. Shell Programming and Scripting
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
8. Shell Programming and Scripting
#!/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
9. Shell Programming and Scripting
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
10. Shell Programming and Scripting
Hello All,
Could you please do help me here as I would like to perform parameter expansion in shell over a parameter expansion.
Let's say I have following variable.
path="/var/talend/nat/cdc"
Now to get only nat I could do following.
path1="${path%/*}"
path1="${path1##*/}"
Here... (8 Replies)
Discussion started by: RavinderSingh13
8 Replies
LEARN ABOUT CENTOS
logger
LOGGER(1) User Commands LOGGER(1)
NAME
logger - a shell command interface to the syslog(3) system log module
SYNOPSIS
logger [options] [message]
DESCRIPTION
logger makes entries in the system log. It provides a shell command interface to the syslog(3) system log module.
OPTIONS
-n, --server server
Write to the specified remote syslog server instead of to the builtin syslog routines. Unless --udp or --tcp is specified the log-
ger will first try to use UDP, but if it fails a TCP connection is attempted.
-d, --udp
Use datagram (UDP) only. By default the connection is tried to syslog port defined in /etc/services, which is often 514.
-T, --tcp
Use stream (TCP) only. By default the connection is tried to syslog-conn port defined in /etc/services, which is often 601.
-P, --port port
Use the specified port.
-i, --id
Log the process ID of the logger process with each line.
-f, --file file
Log the contents of the specified file. This option cannot be combined with a command-line message.
-h, --help
Display a help text and exit.
-p, --priority priority
Enter the message into the log with the specified priority. The priority may be specified numerically or as a facility.level pair.
For example, -p local3.info logs the message as informational in the local3 facility. The default is user.notice.
-s, --stderr
Output the message to standard error as well as to the system log.
-t, --tag tag
Mark every line to be logged with the specified tag.
-u, --socket socket
Write to the specified socket instead of to the builtin syslog routines.
-V, --version
Display version information and exit.
-- End the argument list. This is to allow the message to start with a hyphen (-).
message
Write the message to log; if not specified, and the -f flag is not provided, standard input is logged.
The logger utility exits 0 on success, and >0 if an error occurs.
Valid facility names are: auth, authpriv (for security information of a sensitive nature), cron, daemon, ftp, kern (can't be generated from
user process), lpr, mail, news, security (deprecated synonym for auth), syslog, user, uucp, and local0 to local7, inclusive.
Valid level names are: alert, crit, debug, emerg, err, error (deprecated synonym for err), info, notice, panic (deprecated synonym for
emerg), warning, warn (deprecated synonym for warning). For the priority order and intended purposes of these levels, see syslog(3).
EXAMPLES
logger System rebooted
logger -p local0.notice -t HOSTIDM -f /dev/idmc
logger -n loghost.example.com System rebooted
SEE ALSO
syslog(3), syslogd(8)
STANDARDS
The logger command is expected to be IEEE Std 1003.2 ("POSIX.2") compatible.
AVAILABILITY
The logger command is part of the util-linux package and is available from Linux Kernel Archive <ftp://ftp.kernel.org/pub/linux/utils/util-
linux/>.
util-linux April 2013 LOGGER(1)