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
