Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.os.unix > #8107 > unrolled thread

shells et opérations sur le texte

Started byThomas <fantome.forums.tDeContes@free.fr.invalid>
First post2023-08-22 14:43 +0200
Last post2023-08-24 01:46 +0200
Articles 8 — 6 participants

Back to article view | Back to fr.comp.os.unix


Contents

  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

#8107 — shells et opérations sur le texte

FromThomas <fantome.forums.tDeContes@free.fr.invalid>
Date2023-08-22 14:43 +0200
Subjectshells 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]


#8109

FromMarc SCHAEFER <schaefer@alphanet.ch>
Date2023-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]


#8115

Fromwilliam <blop@no.spam>
Date2023-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]


#8116

FromNicolas George <nicolas$george@salle-s.org>
Date2023-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]


#8117

Frompehache <pehache.7@gmail.com>
Date2023-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]


#8118

FromNicolas George <nicolas$george@salle-s.org>
Date2023-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]


#8111

FromChristian Weisgerber <naddy@mips.inka.de>
Date2023-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]


#8112

FromThomas <fantome.forums.tDeContes@free.fr.invalid>
Date2023-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