###################################################### # Author : Simona Flavoni for NEMO # Contact : sflod@locean-ipsl.upmc.fr # # Some scripts called by sette.sh # all_functions.sh : all functions used by sette.sh ###################################################### #set -x set -o posix #set -u #set -e #+ # # ================ # all_functions.sh # ================ # # ---------------------------------------------- # Set of functions used by sette.sh (NEMO tests) # ---------------------------------------------- # # SYNOPSIS # ======== # # :: # # $ ./set_namelist.sh INPUT_NAMELIST VARIABLE VALUE # # # DESCRIPTION # =========== # # function superegrep # input variable value # # function set_namelist # input namelist_name variable value # output namelist # # EXAMPLES # ======== # # :: # # $ ./set_namelist.sh namelist nn_itend 75 # $ ./set_namelist.sh namelist_ice_lim2 cn_icerst_in \"00101231_restart_icemod\" # # # TODO # ==== # # option debug # # # EVOLUTIONS # ========== # # $Id$ # # * creation #- # # function to find namelists parameters supergrep () { grep "^ *$1 *=" $2 | sed -e "s% *\!.*%%" } usage=" Usage : set_namelist input_namelist variable_name value" usage=" if value is a string ths is neede syntax : ./set_namelist namelist_name var_name \"new_value\" " # function to set namelists parameters set_namelist () { minargcount=3 if [ ${#} -lt ${minargcount} ] then echo "not enought arguments for set_namelist" echo "${usage}" exit 1 fi unset minargcount if [ -f ${SETTE_DIR}/output.sette ] ; then echo "file output already present. Append comments" echo "`ls ${SETTE_DIR}/output.sette`" else echo "file output not present" touch ${SETTE_DIR}/output.sette echo "`ls ${SETTE_DIR}/output.sette`" fi echo "executing script : set_namelist $@" >> ${SETTE_DIR}/output.sette echo "################" >> ${SETTE_DIR}/output.sette VAR_NAME=$( supergrep $2 ${INPUT_DIR}/$1 ) sed -e "s/${VAR_NAME}/$2=$3/" ${INPUT_DIR}/$1 > ${INPUT_DIR}/$1.tmp mv ${INPUT_DIR}/$1.tmp ${INPUT_DIR}/$1 if [ -f ${INPUT_DIR}/$1 ] ; then echo "namelist not empty: ok" else echo "some problems in sed namelist: exit" exit 1 fi echo "finished script : set_namelist $@" >> ${SETTE_DIR}/output.sette echo "++++++++++++++++" >> ${SETTE_DIR}/output.sette echo " " >> ${SETTE_DIR}/output.sette }