[Script shell] Chaine repartie sur plusieurs lignes avec indentation
9 réponses
Pascal Hambourg
Bonjour,
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur
plusieurs lignes pour limiter la longueur des lignes du script. Pour le
moment je fais ça pour recoller les morceaux :
'partie 1'\
'partie 2'\
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont traités
comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du
code et c'est laid.
Voyez-vous d'autres solutions qui permettent l'indentation, sans
utiliser de variable ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
pehache
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid. Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
Si tu acceptes qu'une espace soit insérée entre les parties (je ne sais pas pourquoi) : $(echo 'partie 1' 'partie 2') -- "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine ST passe le mur du çon :
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit :
Bonjour,
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur
plusieurs lignes pour limiter la longueur des lignes du script. Pour le
moment je fais ça pour recoller les morceaux :
'partie 1'
'partie 2'
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont traités
comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du
code et c'est laid.
Voyez-vous d'autres solutions qui permettent l'indentation, sans
utiliser de variable ?
Si tu acceptes qu'une espace soit insérée entre les parties (je ne sais
pas pourquoi) :
$(echo 'partie 1'
'partie 2')
--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine
ST passe le mur du çon : <j3nn2hFmqj7U1@mid.individual.net>
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid. Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
Si tu acceptes qu'une espace soit insérée entre les parties (je ne sais pas pourquoi) : $(echo 'partie 1' 'partie 2') -- "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine ST passe le mur du çon :
Nicolas George
Pascal Hambourg , dans le message <sufo10$ea4$, a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid.
Pascal Hambourg , dans le message <sufo10$ea4$1@ns507557.dodin.fr.nf>, a
écrit :
Bonjour,
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur
plusieurs lignes pour limiter la longueur des lignes du script. Pour le
moment je fais ça pour recoller les morceaux :
'partie 1'
'partie 2'
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont traités
comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du
code et c'est laid.
Pascal Hambourg , dans le message <sufo10$ea4$, a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid.
Pascal Hambourg , dans le message <sufo10$ea4$, a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid.
Pascal Hambourg , dans le message <sufo10$ea4$1@ns507557.dodin.fr.nf>, a
écrit :
Bonjour,
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur
plusieurs lignes pour limiter la longueur des lignes du script. Pour le
moment je fais ça pour recoller les morceaux :
'partie 1'
'partie 2'
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont traités
comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du
code et c'est laid.
Pascal Hambourg , dans le message <sufo10$ea4$, a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid.
Bonjour, Le 15/02/2022 Í 10:02, pehache a écrit dans le message  :
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid. Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
Si tu acceptes qu'une espace soit insérée entre les parties (je ne sais pas pourquoi) : $(echo 'partie 1' 'partie 2')
echo voit deux arguments donc les sépare par une espace. cmd "$(printf '%s' 'partie 1' 'partie 2')" Une autre solution (il faut que ce soit des tabulations devant pour que ça fonctionne)Â : cmd "$(tr -d 'n' <<-'EOF' partie 1 partie 2 partie 3 EOF )" -- Benoit Izac
Bonjour,
Le 15/02/2022 Í 10:02, pehache a écrit dans le message
<j718hjFdptsU1@mid.individual.net>Â :
Un script shell contient une chaÍ®ne longue que je souhaite étaler
sur plusieurs lignes pour limiter la longueur des lignes du script.
Pour le moment je fais ça pour recoller les morceaux :
'partie 1'
'partie 2'
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont
traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec
le reste du code et c'est laid.
Voyez-vous d'autres solutions qui permettent l'indentation, sans
utiliser de variable ?
Si tu acceptes qu'une espace soit insérée entre les parties (je ne
sais pas pourquoi) :
$(echo 'partie 1'
'partie 2')
echo voit deux arguments donc les sépare par une espace.
cmd "$(printf '%s'
'partie 1'
'partie 2')"
Une autre solution (il faut que ce soit des tabulations devant pour que
ça fonctionne)Â :
cmd "$(tr -d 'n' <<-'EOF'
partie 1
partie 2
partie 3
EOF
)"
Bonjour, Le 15/02/2022 Í 10:02, pehache a écrit dans le message  :
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid. Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
Si tu acceptes qu'une espace soit insérée entre les parties (je ne sais pas pourquoi) : $(echo 'partie 1' 'partie 2')
echo voit deux arguments donc les sépare par une espace. cmd "$(printf '%s' 'partie 1' 'partie 2')" Une autre solution (il faut que ce soit des tabulations devant pour que ça fonctionne)Â : cmd "$(tr -d 'n' <<-'EOF' partie 1 partie 2 partie 3 EOF )" -- Benoit Izac
Jacques L'helgoualc'h
Le 15-02-2022, pehache a écrit :
Le 15/02/2022 Í 11:02, Nicolas George a écrit :
Pascal Hambourg , dans le message <sufo10$ea4$, a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid.
~ $ echo "$(cat <<BLA |sed -ne 'H;${x;s/n[[:blank:]]*//g;p}' tata tete titi toto BLA )" :)
Le 15-02-2022, pehache a écrit :
Le 15/02/2022 Í 11:02, Nicolas George a écrit :
Pascal Hambourg , dans le message <sufo10$ea4$1@ns507557.dodin.fr.nf>, a
écrit :
Bonjour,
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur
plusieurs lignes pour limiter la longueur des lignes du script. Pour le
moment je fais ça pour recoller les morceaux :
'partie 1'
'partie 2'
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont traités
comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du
code et c'est laid.
Pascal Hambourg , dans le message <sufo10$ea4$, a écrit :
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid.
~ $ echo "$(cat <<BLA |sed -ne 'H;${x;s/n[[:blank:]]*//g;p}' tata tete titi toto BLA )" :)
tth
On 2/15/22 09:25, Pascal Hambourg wrote:
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid. Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
:/tmp$ cat multilignes.sh echo $(printf "%s%s%s%s%sn" "Alice" "Bob" "Charlie" "Diana" "Esther" ) :/tmp$ bash multilignes.sh AliceBobCharlieDianaEsther :/tmp$ -- +-------------------------------------------------------------------+ | sphinx of black quartz, judge my vow. | +-------------------------------------------------------------------+
On 2/15/22 09:25, Pascal Hambourg wrote:
Bonjour,
Un script shell contient une chaÍ®ne longue que je souhaite étaler sur
plusieurs lignes pour limiter la longueur des lignes du script. Pour le
moment je fais ça pour recoller les morceaux :
'partie 1'
'partie 2'
'partie 3'
Mais je ne peux pas faire d'indentation sinon les morceaux sont traités
comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du
code et c'est laid.
Voyez-vous d'autres solutions qui permettent l'indentation, sans
utiliser de variable ?
--
+-------------------------------------------------------------------+
| sphinx of black quartz, judge my vow. |
+-------------------------------------------------------------------+
Bonjour, Un script shell contient une chaÍ®ne longue que je souhaite étaler sur plusieurs lignes pour limiter la longueur des lignes du script. Pour le moment je fais ça pour recoller les morceaux : 'partie 1' 'partie 2' 'partie 3' Mais je ne peux pas faire d'indentation sinon les morceaux sont traités comme des chaÍ®nes distinctes, donc ce n'est pas aligné avec le reste du code et c'est laid. Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
:/tmp$ cat multilignes.sh echo $(printf "%s%s%s%s%sn" "Alice" "Bob" "Charlie" "Diana" "Esther" ) :/tmp$ bash multilignes.sh AliceBobCharlieDianaEsther :/tmp$ -- +-------------------------------------------------------------------+ | sphinx of black quartz, judge my vow. | +-------------------------------------------------------------------+
Nicolas George
pehache , dans le message , a écrit :
--> "sans utiliser de variable"
J'avais occulté ça. Pourquoi pas en portant des gants de boxe pour taper le code, tant qu'on y est ?
pehache , dans le message <g63Zzx3eI2DpmOoeA8rBLqZR2EY@jntp>, a écrit :
--> "sans utiliser de variable"
J'avais occulté ça. Pourquoi pas en portant des gants de boxe pour taper le
code, tant qu'on y est ?
J'avais occulté ça. Pourquoi pas en portant des gants de boxe pour taper le code, tant qu'on y est ?
Pascal Hambourg
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit :
Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
Merci pour vos contributions. Je fais une réponse groupée. Pourquoi sans utiliser de variable ? Parce que je sais faire avec, et que j'espère trouver "mieux" (mais apparemment ce n'est pas gagné). Mes critères sont lisibilité, robustesse (insensibilité Í l'indentation avec tabulation ou espace) et efficacité du code. Oui, dans le cas présent l'insertion d'espaces au sens large (tabulation, fin de ligne...) est acceptable. Par contre je préfère éviter d'utiliser la commande echo dont le comportement varie selon l'implémentation. Par exemple celle intégrée Í dash interprète comme un caractère d'échappement (option -e implicite, et pas d'option -E pour l'annuler), et il y en a dans cette chaÍ®ne. Je lui préfère donc printf. Je n'aime pas trop les constructions Í base de <<. Certes <<- supprime les tabulations en début de ligne, mais pas les espaces donc c'est fragile. Concernant l'efficacité, je doute que l'utilisation de commandes (même intégrées au shell) ou de redirections soit mieux qu'une variable.
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit :
Voyez-vous d'autres solutions qui permettent l'indentation, sans
utiliser de variable ?
Merci pour vos contributions. Je fais une réponse groupée.
Pourquoi sans utiliser de variable ? Parce que je sais faire avec, et
que j'espère trouver "mieux" (mais apparemment ce n'est pas gagné).
Mes critères sont lisibilité, robustesse (insensibilité Í l'indentation
avec tabulation ou espace) et efficacité du code.
Oui, dans le cas présent l'insertion d'espaces au sens large
(tabulation, fin de ligne...) est acceptable.
Par contre je préfère éviter d'utiliser la commande echo dont le
comportement varie selon l'implémentation. Par exemple celle intégrée Í
dash interprète comme un caractère d'échappement (option -e implicite,
et pas d'option -E pour l'annuler), et il y en a dans cette chaͮne. Je
lui préfère donc printf.
Je n'aime pas trop les constructions Í base de <<. Certes <<- supprime
les tabulations en début de ligne, mais pas les espaces donc c'est fragile.
Concernant l'efficacité, je doute que l'utilisation de commandes (même
intégrées au shell) ou de redirections soit mieux qu'une variable.
Voyez-vous d'autres solutions qui permettent l'indentation, sans utiliser de variable ?
Merci pour vos contributions. Je fais une réponse groupée. Pourquoi sans utiliser de variable ? Parce que je sais faire avec, et que j'espère trouver "mieux" (mais apparemment ce n'est pas gagné). Mes critères sont lisibilité, robustesse (insensibilité Í l'indentation avec tabulation ou espace) et efficacité du code. Oui, dans le cas présent l'insertion d'espaces au sens large (tabulation, fin de ligne...) est acceptable. Par contre je préfère éviter d'utiliser la commande echo dont le comportement varie selon l'implémentation. Par exemple celle intégrée Í dash interprète comme un caractère d'échappement (option -e implicite, et pas d'option -E pour l'annuler), et il y en a dans cette chaÍ®ne. Je lui préfère donc printf. Je n'aime pas trop les constructions Í base de <<. Certes <<- supprime les tabulations en début de ligne, mais pas les espaces donc c'est fragile. Concernant l'efficacité, je doute que l'utilisation de commandes (même intégrées au shell) ou de redirections soit mieux qu'une variable.
Pascal Hambourg
Le 15/02/2022 Í 14:00, Pascal Hambourg a écrit :
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit : Mes critères sont lisibilité, robustesse (insensibilité Í l'indentation avec tabulation ou espace) et efficacité du code. Oui, dans le cas présent l'insertion d'espaces au sens large (tabulation, fin de ligne...) est acceptable.
Du coup je peux simplement écrire : 'partie 1 partie 2 partie 3' et indenter Í ma guise. Mais dans le cas contraire, je retiens qu'il faut utiliser printf ou une variable : "$(printf %s 'partie 1' 'partie 2' 'partie 3')" chaine='partie 1' chaine="$chaine"'partie 2' chaine="$chaine"'partie 3'
Le 15/02/2022 Í 14:00, Pascal Hambourg a écrit :
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit :
Mes critères sont lisibilité, robustesse (insensibilité Í l'indentation
avec tabulation ou espace) et efficacité du code.
Oui, dans le cas présent l'insertion d'espaces au sens large
(tabulation, fin de ligne...) est acceptable.
Du coup je peux simplement écrire :
'partie 1
partie 2
partie 3'
et indenter Í ma guise.
Mais dans le cas contraire, je retiens qu'il faut utiliser printf ou une
variable :
Le 15/02/2022 Í 09:25, Pascal Hambourg a écrit : Mes critères sont lisibilité, robustesse (insensibilité Í l'indentation avec tabulation ou espace) et efficacité du code. Oui, dans le cas présent l'insertion d'espaces au sens large (tabulation, fin de ligne...) est acceptable.
Du coup je peux simplement écrire : 'partie 1 partie 2 partie 3' et indenter Í ma guise. Mais dans le cas contraire, je retiens qu'il faut utiliser printf ou une variable : "$(printf %s 'partie 1' 'partie 2' 'partie 3')" chaine='partie 1' chaine="$chaine"'partie 2' chaine="$chaine"'partie 3'