Pour une solution bash
-seulement sans potentiellement coûteux appels à des programmes externes (seulement important si vous faites beaucoup, ce qui ne peut pas être le cas ici):
pax> export x=a ; if [[ "${x%%_*}" != "${x}" ]]; then
...> export bkpdir=/backups/${x%%_*}/backup
...> else
...> export bkpdir=/backups/others/backup
...> fi
pax> echo " ${bkpdir}"
/backups/others/backup
pax> export x=a_b ; if [[ "${x%%_*}" != "${x}" ]]; then
...> export bkpdir=/backups/${x%%_*}/backup
...> else
...> export bkpdir=/backups/others/backup
...> fi
pax> echo " ${bkpdir}"
/backups/a/backup
la déclaration if
détecte s'il y a un trait de soulignement en cochant une chaîne modifiée contre le ori ginal. S'il y a un trait de soulignement, ils seront différents.
Le ${x%%_*}
vous donne la chaîne jusqu'à la suppression du plus long _*
motif (en d'autres termes, il supprime tout du premier soulignement à la fin).
A (légèrement) variante plus simple serait:
export bkpdir=/backups/others/backup
if [[ "${x%%_*}" != "${x}" ]]; then
export bkpdir=/backups/${x%%_*}/backup
fi
merci pour cela. je veux aussi que si (_) n'est pas présent alors nom d'utilisateur par défaut = autres –