Right, so if this was a simple bash script I would not need the escape. But my assumption was that when SGE interpreted a script the escape was needed pass the commands through correctly. However from other examples I've seen, it doesn't look like other SGE users need to do this, so I'm not clear on why this seems necessary in my case.

Thanks,
Sara

On Apr 16, 2012, at 10:43 PM, Rayson Ho wrote:

I'm also not a scripting expert... but in general, if you escape the $
symbol, it means that you don't want the shell to treat it as an env
var. Eg:

#!/bin/bash

export ONE=1

echo $ONE
echo \$ONE


Output:
1
$ONE

Rayson



On Tue, Apr 17, 2012 at 1:37 AM, Sara Rolfe <[email protected]> wrote:
I am new to both scripting and SGE, so I don't understand why, but I need to
escape all the variables in my script.  For example,

awk "NR==$SGE_TASK_ID" /myPath/fileList.txt

produces a blank output, but if I escape the env variable, like:

awk "NR==\$SGE_TASK_ID" /myPath/fileList.txt

then I get the correct line from the text file. The problem is when I try to assign this output to a variable. I still need to use the escape, but I
think it's not being passed correctly.

Thanks,
Sara

On Apr 16, 2012, at 10:27 PM, Rayson Ho wrote:

It works for bash too... except with the "escape" one you are using:

#!/bin/bash

export SGE_TASK_ID=2

line2=`awk -v task_id=$SGE_TASK_ID 'NR==task_id' "/tmp/fileList.txt"`
echo $line2

line2=$(awk -v "task_id=$SGE_TASK_ID" 'NR==task_id' "/tmp/ fileList.txt" )
echo $line2

line2=$(awk -v "task_id=$SGE_TASK_ID" 'NR==task_id' "/tmp/ fileList.txt" )
echo \$line2

[rayson@computer source]$ ./sh
L2
L2
$line2

Why are you doing "echo \$line2"?

Rayson



On Tue, Apr 17, 2012 at 1:21 AM, Sara Rolfe <[email protected]>
wrote:

I'm using bash.


Thanks,

Sara



On Apr 16, 2012, at 10:20 PM, Rayson Ho wrote:


What shell are you using??


Rayson



On Tue, Apr 17, 2012 at 1:15 AM, Sara Rolfe <[email protected]>

wrote:


Hi Rayson,


Thanks for your reply. I have tried using -v to pass variables to awk,

but

it is not working correctly. I think it's because my script requires all

variables to be escaped and I don't know how to pass the escape symbol

correctly.


line2=$(awk -v "task_id=$SGE_TASK_ID" 'NR==task_id'

"/myPath/fileList.txt" )

echo \$line2


has a blank output, but so does


line2=$(awk -v "task_id=\$SGE_TASK_ID" 'NR==task_id'

"/myPath/fileList.txt"

)

echo \$line2


Can you give me any insight into passing the escape sign or why I am

needing

to escape all the variables in my script?


Thanks,

Sara



On Apr 16, 2012, at 9:13 PM, Rayson Ho wrote:


line2=$(awk -v "task_id=$SGE_TASK_ID" 'NR==task_id' "/tmp/ fileList.txt" )






_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to