<![CDATA[Forum Ubuntu-fr.org / Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?id=1176981 Thu, 24 Jan 2013 12:07:48 +0000 FluxBB <![CDATA[Réponse à : Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12326251#p12326251 Pour les arguments supplémentaires, je n'avais pas fait suffisamment attention à la ligne
--) shift; break;;

J'attends les résultats du test que je compte faire, et dont je rapporterai ici, pour marquer la conversation comme résolue.

Merci encore

Arbiel

]]>
Thu, 24 Jan 2013 12:07:48 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12326251#p12326251
<![CDATA[Réponse à : Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12325981#p12325981 Arbiel #5 a écrit :

Elle présente par contre les inconvénients, certes mineurs pour ce qui me concerne, ni de ne permettre le regroupement de plusieurs options dans un groupe de lettres unique

C'est exact.

ni d'accepter des arguments qui ne soient pas présentés par le biais d'une option

On peut donner des arguments supplémentaires. Si on ajoute cette ligne à la fin du script en #1 :

for i
do
   echo "Argument supplémentaire : $i"
done

on obtient ceci :

$ ./lecture.sh -δ 5 -f toto -- arg1 arg2 arg3
fichier=toto delta=5
Argument supplémentaire : arg1
Argument supplémentaire : arg2
Argument supplémentaire : arg3

Dois-je aussi conclure que si j'enregistre mes fichiers scripts et mes lanceurs en UTF-16, tous les caractères étant alors représentés sur 2 octets, getops devrait fonctionner ?

Je ne sais pas.

]]>
Thu, 24 Jan 2013 11:42:40 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12325981#p12325981
<![CDATA[Réponse à : Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12325731#p12325731 Bonjour pingouinux

Merci pour ton intervention.

Effectivement la  boucle que tu me présentes me paraît aussi simple à utiliser que getops. Elle présente par contre les inconvénients, certes mineurs pour ce qui me concerne, ni de ne permettre le regroupement de plusieurs options dans un groupe de lettres unique, pratique que les utilisateurs utilisent communément, ni d'accepter des arguments qui ne soient pas présentés par le biais d'une option.

Tu m'apprends également que les termes UTF-n ne désignent pas le nombre de bits du codage des caractères (je ne m'étais jamais penché sur ce problème). J'irai voir dans la documentation comment est représentée la longueur du codage.

Dois-je aussi conclure que si j'enregistre mes fichiers scripts et mes lanceurs en UTF-16, tous les caractères étant alors représentés sur 2 octets, getops devrait fonctionner ?

Enfin, son comportement actuel n'est-il pas un bogue ?

Arbiel

]]>
Thu, 24 Jan 2013 11:18:29 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12325731#p12325731
<![CDATA[Réponse à : Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12323791#p12323791 Bonjour,
Il est possible de lire les arguments soi-même sans utiliser getops. Par exemple :

$ cat lecture.sh
#! /bin/bash

USAGE="       $0 $@\nUsage: $0 [-h] [-δ delta] -f nom_du_fichier"

delta=0
while [ "$1" ]
do
   case "$1"
   in
      -δ) delta="$2"; shift;;
      -f) fichier="$2"; shift;;
      -h) echo -e "$USAGE"; exit ;;
      --) shift; break;;
      * ) echo "Argument inconnu : $1"; echo -e "$USAGE"; exit 1;;
   esac
   shift
done

echo fichier="$fichier" delta="$delta"
$ ./lecture.sh -h
       ./lecture.sh -h
Usage: ./lecture.sh [-h] [-δ delta] -f nom_du_fichier
$ ./lecture.sh -δ 5 -f toto 
fichier=toto delta=5

Remarque :
En UTF-8, les caractères sont codés sur 1, 2, 3 ou 4 octets
e => \x65
é => \xc3\xa9

En UTF-16, les caractères sont codés sur 2 ou 4 octets

]]>
Thu, 24 Jan 2013 08:33:42 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12323791#p12323791
<![CDATA[Réponse à : Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12322241#p12322241 Bonsoir

Merci pour ta remarque. Je n'ai pas encore vu comment la mettre en pratique, mais j'ai constaté ce soir, en faisant de nouveaux tests, que les lettres grecques présentent dans les options étaient codées sur deux caractères, en UTF16 donc, alors que les options "ordinaires" le sont sur un caractère, en UTF-8.

Je vais peut-être devoir les considérées comme des options longues, puisqu'elles occupent deux positions.

Arbiel

]]>
Thu, 24 Jan 2013 00:33:38 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12322241#p12322241
<![CDATA[Réponse à : Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12320551#p12320551 il faut surement que tu regardes l'aspect encoding de ton terminal, et la récupération de caractere qui ne sont pas en UTF-8

]]>
Wed, 23 Jan 2013 20:49:39 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12320551#p12320551
<![CDATA[Utilisation de lettres grecques comme options d'exécution d'un shell]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12317141#p12317141 Bonjour

Je voudrais interdire l'utilisation de certaines options lorsque le script est lancé depuis un terminal. J'ai prévu pour cela d'utiliser des lettres grecques, α, β, γ et δ, utilisées uniquement dans un lanceur Unity, par le biais des "actions" de ce lanceur (clic droit sur le lanceur dans la barre des lanceurs).

Apparemment getopts les remplace par des valeurs nulles.

Y a-t-il un moyen de lui faire accepter ces lettres ?

D'avance merci à quiconque pourra me fournir des indications sur le sujet.

Arbiel

]]>
Wed, 23 Jan 2013 16:35:21 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12317141#p12317141