#!/bin/bash --posix
#!/usr/bin/env dash
#!/usr/bin/env bash
# @(#) s1 Demonstrate IFS setting.
# Section 1, setup, pre-solution.
# Infrastructure details, environment, commands for forum posts.
# Uncomment export command to test script as external user.
# export PATH="/usr/local/bin:/usr/bin:/bin"
set +o nounset
pe() { for i;do printf "%s" "$i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
# C=$HOME/bin/context && [ -f $C ] && . $C eval
version 2>&1 >/dev/null && version =o eval
set -o nounset
pe " posix setting: \"$(set -o | grep -i posix)\""
pe
# Section 2, solution.
pl " Results:"
pe " original: IFS is $(set | grep ^IFS | od -bc)"
var=$'a\nb c'
IFS=$'\n' eval '
pe " before loop: IFS is $(set | grep ^IFS | od -bc)"
for i in $var; do
echo "$i"
done
'
pe " after loop: IFS is $(set | grep ^IFS | od -bc)"
exit 0
The setting stays the same:
Code:
% ./s1
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution : Debian GNU/Linux 5.0 (lenny)
eval - is a shell builtin [bash]
posix setting: "posix on"
-----
Results:
original: IFS is 0000000 111 106 123 075 047 040 011 012
I F S = ' \t \n
0000010
before loop: IFS is 0000000 111 106 123 075 047 012
I F S = ' \n
0000006
a
b c
after loop: IFS is 0000000 111 106 123 075 047 012
I F S = ' \n
0000006
I think this is what you expected.
The dash and plain bash did not keep the before-loop setting ... cheers, drl
Im facing problem in assigning value of eval array variable as normal variable..
x=0
eval DATA${x}="FJSVcpcu"
x=`expr $x + 1`
eval DATA${x}="FJSVcsr"
if x=0, type -> eval echo \$DATA$x , its give me FJSVcpcu
i want assign this value into an variable as
variable=`eval echo... (3 Replies)
Hi,
I have multiple functions that can be called by any shell script. These functions have inbuilt echo statements to logs their activity into a log file. When I run multiple shell scripts that call these functions, they all log into the same log file and I am not able to differentiate which... (2 Replies)
Hello,
I have a script that does an scp to a server and then gets the number of process running on that server, the o/P should be stored in a variable for further processing
eval `echo "ssh -q $Infa_user@$host 'csh -c $CMD '"`
where
CMD="ps -ef | grep -i ${INFA_REPO} | grep -v grep | wc... (2 Replies)
Hi,
i have an issue with eval and variable assignment.
1) i have a date value in a variable and that date is part of a filename,
var1=20100331
file1=${var1}-D1-0092.xml.zip
file2=${var2}-D2-0092.xml.zip
file3=${var3}-D3-0092.xml.zip
i am passing the above variables to a script via... (11 Replies)
Hi Gurus,
I am having 2 parameters as below
parm1=value1
parm2=parm1
I want to evaluate parm1 value using eval echo \$$parm2 and later i want to assign this value to other variable which i will be using in if statement like :
if ]; then
do this.......
fi
could you please suggest... (5 Replies)
Hi guys,
Does awk have a built-in variable which I can use to display the input file it's currently reading?
I'm currently concatenating multiple files using awk and later on do some parsing. But for now, I want to add an extra column in the main output data file - basically putting in the... (3 Replies)
Hi all,
I'm not exactly a shell script guru, so this is probably a very silly question and I'm not seeing the point, but you know, sometimes it happens...
I have this script which adds entries to local arp cache using it to find the corresponding IP address.
# export MAC=00:25:90:34:3d:f2... (16 Replies)
pattern1=book
{
x=1
eval echo \$pattern$x
}
book (this is the output)
But when I assign a variable to the output of the eval it doesn't work unless I prefix 2 times backslash before $ as shown below.
{
a=`eval echo \\$pattern$x`
echo $a
}
book
Why here twice "\" has to be... (3 Replies)
Is there a safe way to evaluate variable declarations within a script whether they come from a .conf file, user input, or stdin?
Example .conf file:
server=ftp.xxxx.com
port=21
user="$USER" # Hopefully allow this type of substitution
domain="$DOMAIN"
server="$(malicious... (4 Replies)
Discussion started by: Michael Stora
4 Replies
LEARN ABOUT BSD
environ
ENVIRON(7) Miscellaneous Information Manual ENVIRON(7)NAME
environ - user environment
SYNOPSIS
extern char **environ;
DESCRIPTION
An array of strings called the `environment' is made available by execve(2) when a process begins. By convention these strings have the
form `name=value'. The following names are used by various commands:
PATH The sequence of directory prefixes that sh, time, nice(1), etc., apply in searching for a file known by an incomplete path name.
The prefixes are separated by `:'. Login(1) sets PATH=:/usr/ucb:/bin:/usr/bin.
HOME A user's login directory, set by login(1) from the password file passwd(5).
TERM The kind of terminal for which output is to be prepared. This information is used by commands, such as nroff or plot(1G), which
may exploit special terminal capabilities. See /etc/termcap (termcap(5)) for a list of terminal types.
SHELL The file name of the users login shell.
TERMCAP The string describing the terminal in TERM, or the name of the termcap file, see termcap(5),termcap(3X).
EXINIT A startup list of commands read by ex(1), edit(1), and vi(1).
USER The login name of the user.
PRINTER The name of the default printer to be used by lpr(1), lpq(1), and lprm(1).
Further names may be placed in the environment by the export command and `name=value' arguments in sh(1), or by the setenv command if you
use csh(1). Arguments may also be placed in the environment at the point of an execve(2). It is unwise to conflict with certain sh(1)
variables that are frequently exported by `.profile' files: MAIL, PS1, PS2, IFS.
SEE ALSO csh(1), ex(1), login(1), sh(1), execve(2), system(3), termcap(3X), termcap(5)4.2 Berkeley Distribution May 20, 1985 ENVIRON(7)