.. index:: single: ecFlow variables (tutorial) single: ECF_HOME (tutorial) .. _tutorial-add-variable: ecFlow variables ================ | We already saw that ecFlow has some :term:`variable`\ s, like ECF_HOME. | There are three kinds of variables: * The variables that are used by :term:`ecFlow`, like ECF_HOME. * The variables that are defined by the user. They should **not** start with "ECF". It is good practice to name these variables with capital letters. * The variables that are generated by ecFlow, and that you can use in your jobs, like ECF_DATE which contains the date of the suite. Ecf Script ---------- In the previous example, we have copied the file :file:`t1.ecf` to the file :file:`t2.ecf`. Edit those two files so they call the unix sleep command with a :term:`variable` called SLEEP as a parameter: .. code-block:: shell :caption: $HOME/course/f1/t1.ecf %include echo "I will now sleep for %SLEEP% seconds" sleep %SLEEP% %include Text ---- Then add the :term:`variable` to the :term:`suite definition`: .. code-block:: shell # Definition of the suite test. suite test edit ECF_INCLUDE "$HOME/course" # replace '$HOME' with the path to your home directory edit ECF_HOME "$HOME/course" family f1 task t1 edit SLEEP 20 task t2 edit SLEEP 20 endfamily endsuite Python ------ .. literalinclude:: src/ecf-variables.py :language: python :caption: $HOME/course/test.py **What to do** #. Do the modifications #. Replace the :term:`suite`. For Python use: :: python3 test.py python3 client.py For text use: :: ecflow_client --suspend=/test ; ecflow_client --replace=/test test.def #. Watch in :term:`ecflow_ui`. You should see the tasks with a :term:`status` :term:`active` for 20 seconds. Look at the job output.