Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 27/01/2023, à 11:05

pingouinux

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

iznobe #23 a écrit :
iznobe@iznobe-PC:~$ j=$( echo $i | sed 's@ */ *@/@g' )

Ici le sed ne sert à rien, c'est le echo qui fait le travail, comme dans ta seconde solution.

Hors ligne

#27 Le 27/01/2023, à 11:16

geole

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

Hizoka a écrit :

Salut, j'ai survolé le truc mais :

test="   oui  non   "
test="${test/#*([[:space:]])/}"
test="${test/%*([[:space:]])/}"
echo "_${test}_"
#_oui  non_

Bonjour
Comme dans les deux cas, je ne comprends pas les synthases, je pense  malgré tout  n'avoir pas fait d'erreur de copier/coller

test="   oui        peut-être          non   "
test="${test/#*([[:space:]])/}"
test="${test/%*([[:space:]])/}"
echo "_${test}_"
test=$(sed -r 's/^\s+|\s+$//g' <<<"$test")
echo "=$test="
_   oui        peut-être          non   _
=oui        peut-être          non=

remarque

test="   oui        peut-être          non   "
echo $test
oui peut-être non

echo "$test"
   oui        peut-être          non   

Dernière modification par geole (Le 27/01/2023, à 11:23)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#28 Le 27/01/2023, à 11:23

Hizoka

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

En reprenant ton code, ça me donne :

test="   oui        peut-être          non   "
test="${test/#*([[:space:]])/}"
test="${test/%*([[:space:]])/}"
echo "_${test}_"
_oui        peut-être          non_

${test/#*([[:space:]])/} veut dire remplace tous les espaces de début par rien.
test : nom de la variable a traiter
/...x... /y : remplace ...x... par y
/# : uniquement en partant du début
ex simples :

test="aba"
echo ${test/#a/x}
# xba # remplacement uniquement du a de début
echo ${test/a/x}
# xba # remplacement uniquement du 1er a (qui se trouve etre au début)
echo ${test//a/x}
# xbx # Remplacement de tous les a
echo ${test%/a/x}
# abx # Remplace le a de fin

test="baba"
echo ${test/#a/x}
# baba # Ne remplace rien car ne commence pas par un a
echo ${test/a/x}
# bxba # remplacement uniquement du 1er a trouvé
echo ${test//a/x}
# bxbx # Remplacement de tous les a
echo ${test%/a/x}
# babx # Remplace le a de fin

Ta remarque ne correspond pas à la demande :

test="   oui        peut-être          non   "
echo $test
oui peut-être non

Il ne veut supprimer que les espaces de début et de fin

Dernière modification par Hizoka (Le 27/01/2023, à 11:29)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#29 Le 27/01/2023, à 11:26

geole

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

a@p:~$ test="   oui        peut-être          non   "
test="${test/#*([[:space:]])/}"
test="${test/%*([[:space:]])/}"
echo "_${test}_"
_   oui        peut-être          non   _

a@p:~$ cat /etc/lsb*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"

Ma remarque était destinée à montrer  la différence de réponse de la commande echo en fonction du codage entre guillemet ou pas. N'en citer que la moitié dénature l'information.

Dernière modification par geole (Le 27/01/2023, à 11:31)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#30 Le 27/01/2023, à 11:32

Hizoka

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

cat /etc/lsb*
DISTRIB_ID=neon
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="KDE neon 5.26"

bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)

shopt -p
shopt -u autocd
shopt -u assoc_expand_once
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -u checkjobs
shopt -s checkwinsize
shopt -s cmdhist
shopt -u compat31
shopt -u compat32
shopt -u compat40
shopt -u compat41
shopt -u compat42
shopt -u compat43
shopt -u compat44
shopt -s complete_fullquote
shopt -u direxpand
shopt -u dirspell
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -s extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -s globasciiranges
shopt -u globstar
shopt -u gnu_errfmt
shopt -s histappend
shopt -u histreedit
shopt -s histverify
shopt -u hostcomplete
shopt -u huponexit
shopt -u inherit_errexit
shopt -s interactive_comments
shopt -u lastpipe
shopt -u lithist
shopt -u localvar_inherit
shopt -u localvar_unset
shopt -u login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -u progcomp_alias
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo

Bah du coup, la remarque n'avait pas vraiment d’intérêt ici...
On sait bien que le résultat n'est pas le même avec ou sans ".

Dernière modification par Hizoka (Le 27/01/2023, à 11:33)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#31 Le 27/01/2023, à 11:36

pingouinux

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

@geole #29 :
Regarde mon message #25. Tu dois activer l'option extglob.

Hors ligne

#32 Le 27/01/2023, à 11:37

geole

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

Trop compliqué

a@p:~$ bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html>

Ceci est un logiciel libre ; vous être libre de le modifier et de le redistribuer.
AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi.
a@p:~$ 
a@p:~$ 
a@p:~$ 
a@p:~$ 
a@p:~$ man shopt
Aucune entrée de manuel pour shopt
a@p:~$ 
a@p:~$ shopt --help
shopt: shopt [-pqsu] [-o] [nom_opt ...]
    Active ou désactive des options du shell.
    
    Change la valeur de chaque option du shell NOMOPT.  S'il n'y a pas d'argument
    à l'option, liste chaque NOMOPT fourni ou toutes les options du shell si aucun
    NOMOPT est donné, avec une indication montrant si chacun est actif ou non.
    
    Options :
      -o	restreint les NOMOPT à ceux définis pour être utilisés avec « set -o »
      -p	affiche chaque option du shell en indiquant son état
      -q	supprime l'affichage
      -s	active (set) chaque NOMOPT
      -u	désactive (unset) chaque NOMOPT
    
    Code de retour :
    Renvoie le code de succès si NOMOPT est active ; échec si une option non valable
    est donnée ou si NOMOPT est inactive.
a@p:~$ 

Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#33 Le 27/01/2023, à 11:44

Hizoka

Re : [Résolu] [Bash] Enlever les 'espaces' en début et fin d'une variable.

@pingouinux, merci je n'avais pas vu ton message.
J'allais en effet le préciser maintenant, soit 8 messages en retard smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne