Script Bash et conditions

Fermé
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 26 juin 2008 à 13:29
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 27 juin 2008 à 15:23
Bonjour,

voila j'ai une portion de mon script qui fait une mise a jour selon l'user toto. Je souhaite maintenant faire cela mais selon l'utilisateur (toto,tata,tutu).
ex : si c'est toto fait ça
si c'est tata fait ça
si c'est tutu fait ça

Je souhaiterais savoir de qu'elle façon la plus propre dois je m'y prendre.

Merci beaucoup.

do
	case $1 in
		-u) USER=$2
		shift 2
		;;
		-h) usage
		exit 0
		;;
		*)
		break
		;;
	esac
done

DATE="`date '+%Y-%m-%d'`"
if [ "${USER}" == "toto" ]
then
	TMPDIR="/tmp/totomaj"
	mkdir -p ${TMPDIR}
	HOMEUSER="/home/toto"
	REPMAJ="totomaj"
	REP="${HOMEUSER}/${REPMAJ}/liste_objets"
	LISTEOB="liste_ob_${DATE}.lst"
	LISTEOBTMP="liste_ob_tmp_${DATE}.lst"
	NEWDIR="liste_ob_rep_${DATE}.lst"
	if [ -e "${TMPDIR}/totomaj.lock" ]
	then
		echo "une maj et en cours " | mail -s "error (majtoto.sh) de mise à jour objet \"${DATE}\" " titi@truc.net

		exit 0
	fi
	touch ${TMPDIR}/totomaj.lock
else
	echo "error utilisateur ${USER}" | mail -s "error (majtoto.sh) de mise à jour objet \"${DATE}\" " titi@truc.net

	exit 1
fi
##creation des répertoires au cas où
if [ ! -d "${TMPDIR}" ]
then
	mkdir -p ${TMPDIR}
fi

if [ ! -d "${REP}" ]
then
	mkdir -p ${REP};chown exemple ${REP};chmod u,g+rwx ${REP}
fi

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
26 juin 2008 à 14:48
Salut,

Pourquoi ne pas simplement remplacer "toto" par "$USER" dans ton script ?
0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
27 juin 2008 à 08:27
Salut,

je pense que dans mon cas cela ne suffise pas puisque les commandes ne sont pas les meme pour chaque USER. Je dois donc differencier l'USER par :

if [ "${USER}" == "toto" ] 
else if [ "${USER}" == "tata" ]
else if [ "${USER}" == "titi" ]
else
fi

Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024
27 juin 2008 à 09:36
puisque les commandes ne sont pas les meme pour chaque USER
Toute les commandes ? Parce que d'après ton exemple j'avais compris que les commandes étaient communes et que seuls les répertoires et noms de dossiers changeaient...

Sinon passe par un :
case "$USER" in
toto)     ...;;
tata)     ...;;
titi)     ...;;
...
esac
non ?
0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
27 juin 2008 à 15:23
Oui effectivement je vais voir de ce côté.

Une autre question j'ai une variable du style

REPMAJ=MaJObjet

qui est un repertoire qui est dans /home/toto/MaJObjet pour l'utilisateur toto. J'ai créer un repertoire MaJObjet1 et MaJObjet2, 3, 4 Mais maintenant comment je peux faire pour que selon l'utilisateur la variable REPMAJ prenne la bonne valeur.

Merci
L'accès au savoir est la première liberté que chaque homme devrait avoir.
0