I wrote a python function called plot_ts_ex
that takes two arguments ts_file
and ex_file
(and the file name for this function is pism_plot_routine
). I want to run this function from a bash script from terminal.
When I don't use variables in the bash script in pass the function arguments (in this case ts_file = ts_g10km_10ka_hy.nc
and ex_file = ex_g10km_10ka_hy.nc
) directly, like this:
#!/bin/sh
python -c 'import pism_plot_routine; pism_plot_routine.plot_ts_ex("ts_g10km_10ka_hy.nc", "ex_g10km_10ka_hy.nc")'
which is similar as in Run function from the command line, that works.
But when I define variables for the input arguments, it doesn't work:
#!/bin/sh
ts_name="ts_g10km_10ka_hy.nc"
ex_name="ex_g10km_10ka_hy.nc"
python -c 'import pism_plot_routine; pism_plot_routine.plot_ts_ex("$ts_name", "$ex_name")'
It gives the error:
FileNotFoundError: [Errno 2] No such file or directory: b'$ts_name'
Then I found a similar question passing an argument to a python function from bash for a python function with only one argument and I tried
#!/bin/sh
python -c 'import sys, pism_plot_routine; pism_plot_routine.plot_ts_ex(sys.argv[1])' "$ts_name" "$ex_name"
but that doesn't work.
So how can I pass 2 arguments for a python function in a bash script using variables?