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