Eval


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Eval
# 8  
Old 04-25-2013
thank you

Last edited by ratnalein88; 05-06-2013 at 03:43 AM..
# 9  
Old 04-25-2013
It depends what you have defined for the variable var, which appears to be a file name. Would you be trying to effectively call in some other code here? What's wrong with just making the file executable and running it, i.e.
Code:
echo "About to run my sub-script in $var"
$var
echo "Finished running sub-script in $var"

Apologies if I have misunderstood, but you may just be over thinking your puzzle.

Of course, if you are setting values in your sub-script that you want to remain for your calling script, you would code it like this (for ksh):-
Code:
echo "About to run my sub-script in $var"
. $var
echo "Finished running sub-script in $var"


Robin
# 10  
Old 04-25-2013
thank you

Last edited by ratnalein88; 05-06-2013 at 03:44 AM..
# 11  
Old 04-25-2013
Quote:
Originally Posted by ratnalein88
Hallo Robin,

thanks for the quick reply.

You are right, var is a file. I need eval in this case, because there are shell-variables in the file, so I need shell to expand them.
Why not just source it? . /path/to/filename

This runs it inside your own shell line-by-line.
# 12  
Old 04-25-2013
thank you

Last edited by ratnalein88; 05-06-2013 at 03:44 AM..
# 13  
Old 04-25-2013
Why not source the temp file, then?

It's not a question of how eval works, it's a question of how the shell works. When a string is unquoted, it splits on all whitespace, not lines.

Using eval means the string gets split twice -- once when you feed it into eval, and again when eval actually executes the code you give it.

What is the echo for? Do you want eval to print those statements or run them?

I think eval "$(cat file)" is closest to what you want... But again I strongly question whether you need eval at all. I bet you could have avoided it if you'd known that using a pipe there would paint you into a corner.
# 14  
Old 04-25-2013
Quote:
Originally Posted by ratnalein88
Hallo Robin,

thank you for your reply.

I can not source it, because I will transfer the output through a pipe in a temp-file:
Code:
... > temp.file

It is really a willingnes to understand how eval works. But it seems to be not trivial for me.

Regards,
Ratna
I thought I knew what you were trying to do, but now I'm completely lost. In your original message you said you wanted to know the difference between:
Code:
eval echo "`cat $var`"

and:
Code:
eval echo "\"`cat $var`\""

There is a very easy way to see the difference. Set var to be the name of a file that contains:
Code:
echo "this is step 1"
date

and then run the commands. In the first case, the output will be:
Code:
echo this is step 1
Thu Apr 25 11:47:54 PDT 2013

modified to be the date corresponding to when you run it and your setting of the TZ environment variable. In the second case, the output will be:
Code:
echo this is step 1
date

So, the difference is that in one, the date command is executed and in the other it is not. And this is explained by the fact that you escaped one set of double quotes in the 2nd eval.

But, this has nothing to do with pipes nor directing the output to a temp file. You can redirect or pipe the output of an eval command and you can redirect or pipe the output of a source (.) command the same way.

I think you need to restate what you are trying to do with pipes and temp files, show us what you're doing, show us what results you're getting, and show or tell us how the results you want are different from what you're getting.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Error in eval eval command to print html tags

anyone has any info on why this is complaining??? vivek@vivek-c5e55ef2e ~/TAC $ zoneCounter=1 vivek@vivek-c5e55ef2e ~/TAC $ optUsage1=23% vivek@vivek-c5e55ef2e ~/TAC $ eval eval echo "<th>Zone $zoneCounter </th><th align=\"left\"> \$optUsage$zoneCounter </th>" -bash: syntax error... (13 Replies)
Discussion started by: vivek d r
13 Replies

2. Shell Programming and Scripting

Error in eval eval command to print html tags

anyone has any info on why this is complaining??? vivek@vivek-c5e55ef2e ~/TAC $ zoneCounter=1 vivek@vivek-c5e55ef2e ~/TAC $ optUsage1=23% vivek@vivek-c5e55ef2e ~/TAC $ eval eval echo "<th>Zone $zoneCounter </th><th align=\"left\"> \$optUsage$zoneCounter </th>" -bash: syntax error... (1 Reply)
Discussion started by: vivek d r
1 Replies

3. Shell Programming and Scripting

Help on eval please

Hello All, Since my variables are nested I use eval to populate the data. I have an ambiguity here when eval is used along with & say I have the below variable url="www.unix.com" , this come from function call as argument. I want to take this into another variable say... (6 Replies)
Discussion started by: sathyaonnuix
6 Replies

4. Shell Programming and Scripting

Strange result of eval, how does eval really work with ssh?

Hi all, some small script with eval turned me to crazy. my OS is linux Linux s10-1310 2.6.16.53-0.8.PTF.434477.3.TDC.0-smp #1 SMP Fri Aug 31 06:07:27 PDT 2007 x86_64 x86_64 x86_64 GNU/Linux below script works well #!/bin/bash eval ssh remotehost date eval ssh remotehost ls below... (1 Reply)
Discussion started by: summer_cherry
1 Replies

5. Shell Programming and Scripting

eval

hi all, Am trying to add some code to a ksh script and i dont understand how an eval function is used : _var=$1 _conceal=$2 eval _val=\$${_var} can someone shed some light on what the eval function in the above context means/does ?? thanks. (4 Replies)
Discussion started by: cesarNZ
4 Replies

6. Shell Programming and Scripting

eval help

I am trying to expand the variable $user in my alias command and tried several variations of eval but can't seem to get it to work. The end result should be either: oracle_user='sudo su - oracle ' or oracle_user='sudo su - oracle1 ' user=$(grep '^oracle:' /etc/passwd | cut... (5 Replies)
Discussion started by: BeefStu
5 Replies

7. UNIX for Advanced & Expert Users

eval behaviour

Hi, I have snippet like the following x="1" prompt1="hi" if I say eval echo \$prompt$x then it is giving o/p "hi" if I say `eval echo \$prompt$x` here it is giving 1 ! if I add one more escape character i.e. `eval echo \\$prompt$x` then it is giving "hi" Can you please... (3 Replies)
Discussion started by: shahnazurs
3 Replies

8. Shell Programming and Scripting

eval misconception

Hi, I have two files "foo" and "bar" $ cat foo a is \$a and b is \$b $ cat bar car tree using the below 'while' loop I expect the output to be: a is car and b is tree while read a b; do eval echo $(cat foo) # o/p: a is $a and b is $b eval "echo $(eval "cat foo")"... (1 Reply)
Discussion started by: royalibrahim
1 Replies

9. Shell Programming and Scripting

EVal

Hi All, I'm running some encrypted data through a script I wrote. In order to do this, I'm using eval to resolve some of my variables. At the moment, when I use eval to resolve, it strips out some of my encrypted values, and totally drops some others. For example if I have the value ab1"3 it drops... (1 Reply)
Discussion started by: Khoomfire
1 Replies

10. Shell Programming and Scripting

eval a variable that has a .

Hi, Is there any way that I can eval the following - eval abc.csv=def.csv I am getting the - bash: command not found error. thanks. (3 Replies)
Discussion started by: ttshell
3 Replies
Login or Register to Ask a Question