SGE shouldn't fool around with the env. var. in your script. IIRC, SGE
looks for "#$" in the script. See -C prefix_string:

http://gridscheduler.sourceforge.net/htmlman/htmlman1/qsub.html

You can always submit test jobs and see how SGE handles them. You can
run a job that does nothing except dumping the env using "env" or
"printenv".

(I'm on the East Coast and it's 2am... which means I am not going to
stay up much longer.)

Rayson





On Tue, Apr 17, 2012 at 1:50 AM, Sara Rolfe <[email protected]> wrote:
> 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