if /path/to/script.sh; then
echo "done."
exit 0
else
echo "error."
exit 1
fi
Или, оставаясь однострочным:
/path/to/script.sh && echo done. || { echo error. ; exit 1; }
Ваша редакция говорит, что A && {B1; БИ 2 ; } || {C1; C2; }
нотация не работает. предполагая, что B2 возвращает 1, что не соответствует вашему исходному сообщению (где выход 0? Вы пробовали его добавить?).
Используйтеawk
:
awk -F'[0-9]' '
BEGIN{
x["H"]=1;
x["O"]=8;
x["C"]=6;
x["Br"]=35;
}
{ print $0" = "x[$1]; }
' input_file > output_file
Выход:
H1 = 1
O1 = 8
C1 = 6
H2 = 1
H3 = 1
O2 = 8
C2 = 6
Br1 = 35
С файлом input
, содержащим указанные вами значения:
for tuple in 'H1,1' 'O1,8' 'C1,6' 'H2,1' 'H3,1' 'O2,6' 'C2,8' 'Br1,35'; do
search=$(echo "$tuple" | cut -d',' -f1)
replace=$(echo "$tuple" | cut -d',' -f2)
sed -i "s/$search/$search = $replace/g" input
done
Сделано командой sed, тоже работает нормально
команда
sed -i -e "/H/s/.*/& = 1/" -e "/O/s/.*/& = 8/" -e "/C/s/.*/& = 6/" -e "/Br/s/.*/& = 35/" filename
выход
H1 = 1
O1 = 8
C1 = 6
H2 = 1
H3 = 1
O2 = 8
C2 = 6
Br1 = 35