[ncl-talk] Passing a variable value from NCL to bash Script [SEC=UNCLASSIFIED]

Griffith Young griffith.young at bom.gov.au
Wed Mar 1 15:43:57 MST 2017


Hello Abheera,
                Apart from the obvious errors in your script, the main problem you have is that NCL cannot effect the environment of calling bash script.

                For example:
                                $ echo ${GRIFF}

                                $ ncl
                                Copyright (C) 1995-2013 - All Rights Reserved
                                University Corporation for Atmospheric Research
                                NCAR Command Language Version 6.1.2
                                The use of this software is governed by a License Agreement.
                                See http://www.ncl.ucar.edu/ for more details.
                                ncl 0> system("export GRIFF=GRIFF")
                                ncl 1>

                                $ echo ${GRIFF}

                                $ export GRIFF=GRIFF
                                $ echo ${GRIFF}
                                GRIFF

                You may be able to scan the output of your NCL script for the values you need, but that seems an incredibly convoluted approach.

                For example:
                                $ ncl << EOF > output.txt
                                > print("Output: Result; 1, 2, 3")
                                > EOF

                                $ grep Output output.txt
                                (0)     Output: Result; 1, 2, 3

                                $ result=$(grep Output output.txt)

                                $ echo ${result}
                                (0) Output: Result; 1, 2, 3

                                $ echo ${result##*;}
                                1, 2, 3

                                $ more output.txt
                                 Copyright (C) 1995-2013 - All Rights Reserved
                                University Corporation for Atmospheric Research
                                NCAR Command Language Version 6.1.2
                                The use of this software is governed by a License Agreement.
                                See http://www.ncl.ucar.edu/ for more details.
                                (0)     Output: Result; 1, 2, 3

                Hope this is helpful.

Regards,
                Griff.


From: ncl-talk-bounces at ucar.edu [mailto:ncl-talk-bounces at ucar.edu] On Behalf Of Abheera Hazra
Sent: Wednesday, 1 March 2017 6:21 PM
To: ncl-talk at ucar.edu
Subject: [ncl-talk] Passing a variable value from NCL to bash Script

Hi,

I am using NCL to calculate a few terms for an optimization algorithm and I am calling the NCL function from within a 'while loop' in a bash script. The 'while loop' runs till a certain condition is met and for the condition to be met, the bash script needs to accept a new value for an existing variable from the NCL script. I have tried using system, systemfunc with even the export command but nothing seems to work. The code looks as follows:

------------------------------------------
#!/bin/bash

w1=0.4
dw1=0.1
inc=0.001

while awk 'BEGIN { if ('$dw1'<'$inc') {exit 1}}'; do

cat <<'EOF' >> opti.error.ncl

;;;;Perform certain computations on w1 and update the w1 and dw1
w1=nw1
dw1=ndw1

      system("w1=" + w1)
      system("dw1=" + dw1)

;;;;w1 and dw1 need to be passed to the bash script

EOF


 ncl k1=${w1}  dw11=${dw1}  opti.error.ncl

echo $w1
echo $dw1

done
------------------------------------------

But this does not update w1 and dw1 values. Any input would be greatly appreciated.

Thanks,
Abheera


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170301/bdddc005/attachment.html 


More information about the ncl-talk mailing list