Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.os.unix > #8107 > unrolled thread
| Started by | Thomas <fantome.forums.tDeContes@free.fr.invalid> |
|---|---|
| First post | 2023-08-22 14:43 +0200 |
| Last post | 2023-08-24 01:46 +0200 |
| Articles | 8 — 6 participants |
Back to article view | Back to fr.comp.os.unix
shells et opérations sur le texte Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2023-08-22 14:43 +0200
Re: shells et opérations sur le texte Marc SCHAEFER <schaefer@alphanet.ch> - 2023-08-23 15:09 +0000
Re: shells et opérations sur le texte william <blop@no.spam> - 2023-09-18 21:04 +0000
Re: shells et opérations sur le texte Nicolas George <nicolas$george@salle-s.org> - 2023-09-18 21:25 +0000
Re: shells et opérations sur le texte pehache <pehache.7@gmail.com> - 2023-09-20 11:31 +0000
Re: shells et opérations sur le texte Nicolas George <nicolas$george@salle-s.org> - 2023-09-20 14:54 +0000
Re: shells et opérations sur le texte Christian Weisgerber <naddy@mips.inka.de> - 2023-08-23 15:18 +0000
Re: shells et opérations sur le texte Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2023-08-24 01:46 +0200
| From | Thomas <fantome.forums.tDeContes@free.fr.invalid> |
|---|---|
| Date | 2023-08-22 14:43 +0200 |
| Subject | shells et opérations sur le texte |
| Message-ID | <uc2ai6$2dkat$1@dont-email.me> |
bonjour :-)
il s'agit du script suivant :
#!/bin/sh -
fuseauHoraire="${fuseauHoraire:0:1} 10#${fuseauHoraire:1:2} *60*60"
sur mon vieux mac, il fonctionnait sans pb.
sur mon nouveau pc, avec Ubuntu 22, il dit "Bad substitution".
Si je supprime "#!/bin/sh -", ça marche. (cad, si je comprend bien, si
je reste explicitement en bash.)
est-ce que qqn pourrait m'expliquer svp ce qui se passe, comment ça
marche, et comment bien écrire les scripts pour faire ce que je veux, svp ?
--
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/
[toc] | [next] | [standalone]
| From | Marc SCHAEFER <schaefer@alphanet.ch> |
|---|---|
| Date | 2023-08-23 15:09 +0000 |
| Message-ID | <uc57fv$tga$1@shakotay.alphanet.ch> |
| In reply to | #8107 |
On Tue, 22 Aug 2023 14:43:50, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
> fuseauHoraire="${fuseauHoraire:0:1} 10#${fuseauHoraire:1:2} *60*60"
Il se peut que ce genre de "parameter expansions" ne soient pas du POSIX
shell, mais du dialecte bash.
Dans ce cas, mettre
#! /bin/bash
au début du fichier. (oui, j'aime bien l'espace et ça marche quand même,
mais #!/bin/bash est plus classique).
Dans le monde d'aujourd'hui, une dépendance à /bin/bash ne me semble pas
bizarre. Il y a très longtemps, on écrivait plutôt du code shell
simplifié pour la portabilité avec les UNIX un peu étranges. Ou on
passait à Perl.
> sur mon nouveau pc, avec Ubuntu 22, il dit "Bad substitution".
> Si je supprime "#!/bin/sh -", ça marche. (cad, si je comprend bien, si
> je reste explicitement en bash.)
Ubuntu est basé sur Debian.
Debian a le concept d'alternative, qui permet à l'administrateur système
de décider si /bin/sh est un mini-shell très efficace et simplifié, ou
le gros /bin/bash.
Exemple ici:
schaefer@reliant:~$ dpkg-divert --list | grep dash
diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash
diversion of /bin/sh to /bin/sh.distrib by dash
/bin/sh est bien dash, pas bash.
C'est configurable à la main avec dpkg-divert (sous root), ou alors, de
mémoire avec dpkg-reconfigure -plow dash (également sous root).
Mais si tu mets /bin/bash dans le she-bang (#!), aucun problème.
--
Attention: limitez le nombre de lignes de citation à l'essentiel, sinon
je ne verrai pas votre réponse. Et si vous écrivez souvent des bobards,
je ne vous lirai plus et je recommanderai (NoCeM) de ne plus vous lire.
[toc] | [prev] | [next] | [standalone]
| From | william <blop@no.spam> |
|---|---|
| Date | 2023-09-18 21:04 +0000 |
| Message-ID | <6508bb7b$0$2992$426a74cc@news.free.fr> |
| In reply to | #8109 |
On 2023-08-23, Marc SCHAEFER <schaefer@alphanet.ch> wrote:
> On Tue, 22 Aug 2023 14:43:50, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
>> fuseauHoraire="${fuseauHoraire:0:1} 10#${fuseauHoraire:1:2} *60*60"
>
> Il se peut que ce genre de "parameter expansions" ne soient pas du POSIX
> shell, mais du dialecte bash.
>
> Dans ce cas, mettre
>
> #! /bin/bash
>
> au début du fichier. (oui, j'aime bien l'espace et ça marche quand même,
> mais #!/bin/bash est plus classique).
>
> Dans le monde d'aujourd'hui, une dépendance à /bin/bash ne me semble pas
> bizarre. Il y a très longtemps, on écrivait plutôt du code shell
> simplifié pour la portabilité avec les UNIX un peu étranges. Ou on
> passait à Perl.
>
>> sur mon nouveau pc, avec Ubuntu 22, il dit "Bad substitution".
>> Si je supprime "#!/bin/sh -", ça marche. (cad, si je comprend bien, si
>> je reste explicitement en bash.)
>
> Ubuntu est basé sur Debian.
>
> Debian a le concept d'alternative, qui permet à l'administrateur système
> de décider si /bin/sh est un mini-shell très efficace et simplifié, ou
> le gros /bin/bash.
>
> Exemple ici:
>
> schaefer@reliant:~$ dpkg-divert --list | grep dash
> diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash
> diversion of /bin/sh to /bin/sh.distrib by dash
>
> /bin/sh est bien dash, pas bash.
Je suis assez partagé sur le fait d'utiliser un shell pour un autre.
En effet, si on met /bin/sh comme shell de script, est ce qu'il ne faut
pas s'assurer que le dit shell sh soit compatbilible sh ?
S'il s'agit d'un shell bash ne faudrait il pas mieux utiliser bash ?
[toc] | [prev] | [next] | [standalone]
| From | Nicolas George <nicolas$george@salle-s.org> |
|---|---|
| Date | 2023-09-18 21:25 +0000 |
| Message-ID | <6508c039$0$7752$426a74cc@news.free.fr> |
| In reply to | #8109 |
Marc SCHAEFER , dans le message <uc57fv$tga$1@shakotay.alphanet.ch>, a écrit : > Dans le monde d'aujourd'hui, une dépendance à /bin/bash ne me semble pas > bizarre. Moi ça me semble assez idiot : soit un veut faire simple, et on fait su sh standard, soit on a besoin de plus et on prend un shell qui corrige **vraiment** les problèmes de conception de sh. Utiliser bash, ce n'est ni fait ni à faire.
[toc] | [prev] | [next] | [standalone]
| From | pehache <pehache.7@gmail.com> |
|---|---|
| Date | 2023-09-20 11:31 +0000 |
| Message-ID | <O7FBJ9K9l9JFTatQ39G0aMCfxJM@jntp> |
| In reply to | #8116 |
Le 18/09/2023 à 23:25, Nicolas George a écrit : > Marc SCHAEFER , dans le message <uc57fv$tga$1@shakotay.alphanet.ch>, a > écrit : >> Dans le monde d'aujourd'hui, une dépendance à /bin/bash ne me semble pas >> bizarre. > > Moi ça me semble assez idiot : soit un veut faire simple, et on fait su sh > standard, soit on a besoin de plus et on prend un shell qui corrige > **vraiment** les problèmes de conception de sh. Par exemple ?
[toc] | [prev] | [next] | [standalone]
| From | Nicolas George <nicolas$george@salle-s.org> |
|---|---|
| Date | 2023-09-20 14:54 +0000 |
| Message-ID | <650b079b$0$25965$426a34cc@news.free.fr> |
| In reply to | #8117 |
pehache , dans le message <O7FBJ9K9l9JFTatQ39G0aMCfxJM@jntp>, a écrit : > Par exemple ? Zsh
[toc] | [prev] | [next] | [standalone]
| From | Christian Weisgerber <naddy@mips.inka.de> |
|---|---|
| Date | 2023-08-23 15:18 +0000 |
| Message-ID | <slrnuec8qi.akk.naddy@lorvorc.mips.inka.de> |
| In reply to | #8107 |
On 2023-08-22, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
> il s'agit du script suivant :
>
> #!/bin/sh -
> fuseauHoraire="${fuseauHoraire:0:1} 10#${fuseauHoraire:1:2} *60*60"
Ce n'est pas du sh(1).
> sur mon vieux mac, il fonctionnait sans pb.
Évidemment, ce /bin/sh a des extensions. C'est probablement un bash.
> sur mon nouveau pc, avec Ubuntu 22, il dit "Bad substitution".
> Si je supprime "#!/bin/sh -", ça marche. (cad, si je comprend bien, si
> je reste explicitement en bash.)
Oui, c'est une extension ksh93 et bash. J'imagine que /bin/sh sur
Ubuntu est un shell plus proche au minimum de POSIX.
> est-ce que qqn pourrait m'expliquer svp ce qui se passe, comment ça
> marche, et comment bien écrire les scripts pour faire ce que je veux, svp ?
Qu'est-ce que tu veux faire ?
Pour découper les chaînes de caractères en sh(1), il y a ${...%...}
(%%, #, ##) et expr(1).
--
Christian "naddy" Weisgerber naddy@mips.inka.de
[toc] | [prev] | [next] | [standalone]
| From | Thomas <fantome.forums.tDeContes@free.fr.invalid> |
|---|---|
| Date | 2023-08-24 01:46 +0200 |
| Message-ID | <uc65ns$3511g$1@dont-email.me> |
| In reply to | #8111 |
Le 23/08/2023 à 17:18, Christian Weisgerber a écrit :
> On 2023-08-22, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
>
>> il s'agit du script suivant :
>>
>> #!/bin/sh -
>> fuseauHoraire="${fuseauHoraire:0:1} 10#${fuseauHoraire:1:2} *60*60"
>> sur mon nouveau pc, avec Ubuntu 22, il dit "Bad substitution".
>> Si je supprime "#!/bin/sh -", ça marche. (cad, si je comprend bien, si
>> je reste explicitement en bash.)
>
> Oui, c'est une extension ksh93 et bash. J'imagine que /bin/sh sur
> Ubuntu est un shell plus proche au minimum de POSIX.
>
>> est-ce que qqn pourrait m'expliquer svp ce qui se passe, comment ça
>> marche, et comment bien écrire les scripts pour faire ce que je veux, svp ?
>
> Qu'est-ce que tu veux faire ?
si c'est pas compliqué, autant rester en sh "proche de POSIX" le plus
longtemps possible.
> Pour découper les chaînes de caractères en sh(1), il y a ${...%...}
> (%%, #, ##) et expr(1).
peux-tu me préciser ce que je dois écrire au lieu de
"${fuseauHoraire:1:2}" stp ?
"${fuseauHoraire%1:2}" ?
"${fuseauHoraire%%1##2}" ?
--
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/
[toc] | [prev] | [standalone]
Back to top | Article view | fr.comp.os.unix
csiph-web