Re: meilleure maniere de prendre en compte les arguments dans un script ksh

Auteur: prx <prx_at_ybad.name>
Date: Mon, 30 Mar 2020 10:54:04 +0200
* openbsd.fr.eu.sy_at_puu.re <openbsd.fr.eu.sy_at_puu.re> le [26-03-2020 16:23:33 +0100]:
> Le truc c'est que les echappements, les quotes ou double quotes ne passent
> pas.
> 
> 
> Pour donner une idée, le script est actuellement accessible ici:
> https://sy.puu.re/flo
> 
> Concernant le briefing sur le script, celui-ci est inspiré de srss pour
> envoyer par mail les elements des flux rss (une reprise de la version golang
> qui ne me satisfaisait pas, 10mo a cause du runtime pour la tache, c'est
> trop gros ^^).
> De base, il envoie les mails en html mais il a la possibilité de les envoyer
> en text ou multi text&html si on y rajoute en parametre la commande pour
> traduire le html en text.
> Cela permet d'utiliser py-html2text, pandoc ou autre selon les desideratas
> de l'utilisateur pour la conversion en texte.
> 
> Le probleme est que ces derniers peuvent recevoir des arguments. Ainsi on
> peut convertir via pandoc par exemple avec "pandoc -r html -t markdown_mmd"
> ou "pandoc -r html -t gfm" selon le rendu voulu.
> 
> Voila des exemples d'usage avec commandes (avec le script tel
> qu'actuellement getopt le permet):
> 	flo -f both -o pandoc/-f/html/-t/markdown_mmd
> 	flo -f text -o html2text/-nobs
> 
> Et voici l'usage qui aurait été préféré:
> 	flo -f both -o "pandoc -f html -t markdown_mmd"
> 	flo -f text -o "html2text -nobs"
> 
> 
> La liste des liens de flux doit se trouver dans le fichier
> ~/.config/flo/flows, un par ligne.
> 
> On 26.03.2020 14:59, prx wrote:
> > * openbsd.fr.eu.sy_at_puu.re <openbsd.fr.eu.sy_at_puu.re> le [26-03-2020
> > 10:35:37 +0100]:
> > > Bonjour à tous,
> > > 
> > > Je profite d'un essai au scriptage avec ksh pour émettre mon premier
> > > vrai
> > > message public (en dehors de celui de présentation) à la communauté
> > > francophone OpenBSD.
> > > 
> > > Je souhaite intégrer la prise en compte d'arguments à un script.
> > > Il y a dans le système de base la commande 'getopt' qui permet cela
> > > mais
> > > elle a des problèmes à gérer les arguments comportant des espaces (
> > > indiqué
> > > même dans la page man ).
> > > 
> > > Ainsi, il n'est pas possible avec de lancer un script tel que:
> > > programme_script -d "argument avec espace"
> > > 
> > > Pour l'instant je contourne le probleme en remplacant les espaces
> > > par des
> > > slashs. Ceci dit, ce petit hack ne me satisfait guère.
> > > 
> > > J'en appelle à vous pour savoir si vous connaissez une meilleure
> > > solution à
> > > proposer.
> > > 
> > > Merci,
> > > Sÿ
> > 
> > Salut,
> > Je crois qu'échapper les espaces est la meilleure méthode.
> > On peut voir un exemple de ton script (si ça peut donner une
> > idée...)?
> 


Vu ce que je lis, je vois 3 solutions éventuelles (c'est
à dire pas testées): 

* Modifier l'IFS
* Écrire une finction que va faire le boulot à la place de
getopt. Ça ressemblerait à:
    args=""
	flag=""
	case i in $_at_ 
		-*)
			# do struff with args...
			args="" # reset arg
			flag=$i
			;;
		*) 
			args="$args $i"
			;;
	esac
C'est loin d'être idéal...
* Ne pas utiliser d'espaces. Pourquoi pas faire appel à un script
qui contiendrai la commande "pandoc ..." ?


-- 
    prx
ReÇu le 30/03/2020 10:54

Cette archive a été créée par hypermail 2.3.0 : 11/03/2021 09:22 CET