1 | #!/bin/bash |
---|
2 | |
---|
3 | # |
---|
4 | # Fonctions utiles pour les scripts de Pack IPSL |
---|
5 | # |
---|
6 | |
---|
7 | function DEM_read_state { |
---|
8 | # Lire l'état du pack pour une simulation |
---|
9 | local L_CONFIG_FILE=${1} |
---|
10 | local L_CONFIG_CARD=${2} |
---|
11 | |
---|
12 | local L_OLD_STATE=$( grep ${L_CONFIG_CARD} ${L_CONFIG_FILE} | awk '{print $2}' ) |
---|
13 | |
---|
14 | if [ ${?} -eq 0 ] |
---|
15 | then |
---|
16 | echo ${L_OLD_STATE} |
---|
17 | return 0 |
---|
18 | else |
---|
19 | return 1 |
---|
20 | fi |
---|
21 | return 0 |
---|
22 | } |
---|
23 | |
---|
24 | function DEM_write_state { |
---|
25 | # Mettre à jour l'état du pack pour une simulation |
---|
26 | |
---|
27 | local L_CONFIG_FILE=${1} |
---|
28 | local L_CONFIG_CARD=${2} |
---|
29 | local L_NEW_STATE=${3} |
---|
30 | |
---|
31 | local L_OLD_LINE=$( grep ${L_CONFIG_CARD} ${L_CONFIG_FILE} ) |
---|
32 | [[ ${?} -eq 0 ]] || ( return 1 ; ) |
---|
33 | local L_OLD_STATE=$( echo ${L_OLD_LINE} | awk '{print $2}' ) |
---|
34 | [[ ${?} -eq 0 ]] || ( return 1 ; ) |
---|
35 | |
---|
36 | L_NEW_LINE="${L_CONFIG_CARD} ${L_NEW_STATE}" |
---|
37 | |
---|
38 | if [[ ! -f ${L_CONFIG_FILE}.lock ]] |
---|
39 | then |
---|
40 | touch ${L_CONFIG_FILE}.lock |
---|
41 | sed -i "s%${L_OLD_LINE}%${L_NEW_LINE}%" ${L_CONFIG_FILE} |
---|
42 | rm -f ${L_CONFIG_FILE}.lock |
---|
43 | else |
---|
44 | DEM_log -0 "Erreur. Verrou sur le fichier : ${L_CONFIG_FILE}" |
---|
45 | return 1 |
---|
46 | fi |
---|
47 | |
---|
48 | return 0 |
---|
49 | } |
---|
50 | |
---|
51 | function DEM_min { |
---|
52 | # Calcul du minimum d'un nombre quelconque d'entiers |
---|
53 | local l_min=${1} l_xx |
---|
54 | |
---|
55 | for l_xx in ${*:2:${#}} |
---|
56 | do |
---|
57 | [[ ${l_xx} -lt ${l_min} ]] && l_min=${l_xx} |
---|
58 | done |
---|
59 | echo ${l_min} |
---|
60 | } |
---|
61 | |
---|
62 | function DEM_max { |
---|
63 | # Calcul du maximum d'un nombre quelconque d'entiers |
---|
64 | local l_max=${1} l_xx |
---|
65 | |
---|
66 | for l_xx in ${*:2:${#}} |
---|
67 | do |
---|
68 | [[ ${l_xx} -gt ${l_max} ]] && l_max=${l_xx} |
---|
69 | done |
---|
70 | echo ${l_max} |
---|
71 | } |
---|
72 | |
---|
73 | function DEM_log { |
---|
74 | # Affichage d'un message sur stdout et dans un fichier de log |
---|
75 | # DEM_log [-0|-1|-2|-3] Message |
---|
76 | # |
---|
77 | local MESSAGE P_LINE |
---|
78 | LOG_LEV=${LOG_LEV:-3} |
---|
79 | local OPTARG OPTIND L_LOG=1 |
---|
80 | local L_DEM_LOG=${DEM_LOG:-dem_log.${$}} |
---|
81 | |
---|
82 | while getopts 0123 l_name |
---|
83 | do |
---|
84 | case ${l_name} in |
---|
85 | ( 0 ) L_LOG=1 ;; |
---|
86 | ( 1 ) L_LOG=1 ;; |
---|
87 | ( 2 ) L_LOG=2 ;; |
---|
88 | ( 3 ) L_LOG=3 ;; |
---|
89 | esac |
---|
90 | done |
---|
91 | shift $(( ${OPTIND} - 1 )) |
---|
92 | |
---|
93 | if [[ ${L_LOG} -le ${LOG_LEV} ]] |
---|
94 | then |
---|
95 | MESSAGE=${*} |
---|
96 | P_LINE="$(date) - ${MESSAGE}" |
---|
97 | |
---|
98 | echo ${P_LINE} |
---|
99 | echo ${P_LINE} >> ${L_DEM_LOG} |
---|
100 | fi |
---|
101 | return |
---|
102 | } |
---|