Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bash et expression régulière

3 réponses
Avatar
Thoma
Bonjour,

Je pratique bash, en amateur, afin de me simplifier la vie
(administration de ma machine perso).
J'ai découvert que bash intégre un notion d'expression régulière et, du
coup, je me suis dit que je pouvais améliorer certain de mes scripts.

Mais je ne comprends pas tous les détails. En effet, je teste mes
expressions régulières avec Kodos puis je les essaye sous bash et là,
patatras.

exemple:

$SVNSERVE_OPTS="--root=/var/lib/svn/repos"
$REPOSPATH="${SVNSERVE_OPTS##--root=}"

echo ${TEST}

Ça me renvoie :

/var/lib/svn/repos

Mais (voilà la question) peux t-on écrire une expression qui permette de
renvoyer "/var/lib/svn" ?


D'avance merci

Thoma

3 réponses

Avatar
Jean-Louis Hamel


Ça me renvoie :

/var/lib/svn/repos

Mais (voilà la question) peux t-on écrire une expression qui permette de
renvoyer "/var/lib/svn" ?



Utiliser dirname ? La commande:

dirname /var/lib/svn/repos

donne:
/var/lib/svn

--
JLH

Avatar
Thoma


Ça me renvoie :

/var/lib/svn/repos

Mais (voilà la question) peux t-on écrire une expression qui permette de
renvoyer "/var/lib/svn" ?



Utiliser dirname ? La commande:

dirname /var/lib/svn/repos

donne:
/var/lib/svn



Du coup, j'écris cela

$SVNSERVE_OPTS="--root=/var/lib/svn/repos"

$REPOSPATH=`dirname ${SVNSERVE_OPTS##--root=}`

echo ${REPOSPATH}

Et ça me renvoie :

/var/lib/svn

Merci Jean-Louis

Thoma


Avatar
Stephane Chazelas
On Sun, 18 Nov 2007 13:26:56 +0100, Thoma wrote:
[...]
Je pratique bash, en amateur, afin de me simplifier la vie
(administration de ma machine perso).
J'ai découvert que bash intégre un notion d'expression régulière et, du
coup, je me suis dit que je pouvais améliorer certain de mes scripts.

Mais je ne comprends pas tous les détails. En effet, je teste mes
expressions régulières avec Kodos puis je les essaye sous bash et là,
patatras.

exemple:

$SVNSERVE_OPTS="--root=/var/lib/svn/repos"
$REPOSPATH="${SVNSERVE_OPTS##--root=}"

echo ${TEST}

Ça me renvoie :

/var/lib/svn/repos

Mais (voilà la question) peux t-on écrire une expression qui permette de
renvoyer "/var/lib/svn" ?


SVNSERVE_OPTS="--root=/var/lib/svn/repos"
REPOSPATH=${SVNSERVE_OPTS#--root=}
REPOSPATH=${REPOSPATH%/*}

Ou

SVNSERVE_OPTS="--root=/var/lib/svn/repos"
REPOSPATH=$(dirname -- "${SVNSERVE_OPTS#*=}")

Note que dire "je pratique bash", c'est comme dire "je pratique
le Gnu C compiler". bash est un interpreteur du language de
shell Unix standard (et supporte des extensions GNU), tout comme
gcc est un compilateur pour le language C standard (et supporte
des extensions GNU).

--
Stephane