Shell-script reconnaissance de '
Fermé
jakol
-
25 avril 2009 à 18:10
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 25 avril 2009 à 18:41
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 25 avril 2009 à 18:41
A voir également:
- Shell-script reconnaissance de '
- Script vidéo youtube - Guide
- Reconnaissance musique en ligne sans télécharger - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Reconnaissance facial en ligne - Guide
- Logiciel reconnaissance note de musique - Télécharger - Création musicale
2 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 avril 2009 à 18:36
25 avril 2009 à 18:36
Salut,
Non tu ne pourras pas dans la mesure où ce n'est pas le script qui pose problème mais le shell qui lance le script.
La quote simple (tout comme la double d'ailleurs) est un des caractères réservés du shell qu'il faut absolument échapper pour une interprétation littérale...
Tu peux toujours entourer l'expression par des quotes doubles, mais à ce moment là il n'y aura plus que 2 arguments dans ta ligne de commande !
./repeat 2 "je m'appelle jakol"
$1 = 2
$2 = "je m'appelle jakol"
;-))
Non tu ne pourras pas dans la mesure où ce n'est pas le script qui pose problème mais le shell qui lance le script.
La quote simple (tout comme la double d'ailleurs) est un des caractères réservés du shell qu'il faut absolument échapper pour une interprétation littérale...
Tu peux toujours entourer l'expression par des quotes doubles, mais à ce moment là il n'y aura plus que 2 arguments dans ta ligne de commande !
./repeat 2 "je m'appelle jakol"
$1 = 2
$2 = "je m'appelle jakol"
;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 avril 2009 à 18:41
25 avril 2009 à 18:41
Salut,
L'apostrophe simple est un caractère de protection pour le shell.
Voir le man bash
L'apostrophe simple est un caractère de protection pour le shell.
Voir le man bash
PROTECTION
Les protections (quoting) permettent de forcer l'interpréteur à ignorer la signification spéciale de certains caractères ou mots. Les protections peuvent être utilisées pour désactiver le traitement des caractères spéciaux,
éviter la reconnaissance des mots réservés ou empêcher le développement des paramètres.
Tous les métacaractères décrits plus haut dans DÉFINITIONS ont des significations spéciales pour l'interpréteur et doivent être protégés pour ne représenter que leur propre caractère.
Lorsque les outils de développement de l'historique des commandes sont utilisés (voir plus bas DÉVELOPPEMENT DE L'HISTORIQUE ), le caractère de développement de l'historique, généralement !, doit être protégé pour éviter le
développement de l'historique.
Il y a trois mécanismes de protection : le caractère d'échappement, les guillemets simples (« single quote ») et les guillemets doubles (« double quote »).
Un caractère contre-oblique (\) non protégé, est le caractère d'échappement. Il préserve la valeur littérale du caractère qui le suit, à l'exception du <saut de ligne>. Si un couple \<saut de ligne> apparaît et si la con-
tre-oblique n'est pas elle-même protégée, l'ensemble \<saut de ligne> est considéré comme une continuation de ligne (c'est-à-dire qu'il est supprimé du flot d'entrée et ignoré en pratique).
Encadrer des caractères entre des guillemets simples préserve la valeur littérale de chacun des caractères entre guillemets simples. Un guillement simple ne peut pas être placé entre deux guillemets simples, même s'il est
précédé d'une contre-oblique.
Encadrer des caractères entre des guillemets doubles préserve la valeur littérale de chacun des caractères sauf $, `, \ et, lorsque le développement de l'historique est activé, !. Les caractères $ et ` conservent leurs sig-
nifications spéciales entre guillemets doubles. La contre-oblique ne conserve sa signification spéciale que lorsqu'elle est suivie par l'un des caractères suivants : $, `, ", \ ou <saut de ligne>. Un guillemet double peut
être protégé entre deux guillemets doubles en le faisant précéder d'une contre-oblique. S'il est activé, le développement de l'historique sera effectué, à moins qu'un ! apparaissant entre guillemets doubles ne soit protégé
par une contre-oblique. La contre-oblique précédant le ! n'est pas supprimée.
Les caractères spéciaux * et @ ont des significations spéciales lorsqu'ils se trouvent entre des guillemets doubles (voir PARAMÈTRES plus bas).
Les mots de la forme $'chaîne' sont traités spécialement. Le mot est développé en chaîne avec les caractères protégés par contre-oblique remplacés comme spécifié par le standard ANSI C. Les suites d'échappement par con-
tre-oblique, si présentes, sont décodées comme suit :
\a alerte (alarme)
\b effacement arrière (backspace)
\e caractère d'échappement
\f saut de page (form feed)
\n saut de ligne (new line)
\r retour chariot (carriage return)
\t tabulation horizontale
\v tabulation verticale
\\ contre-oblique
\' guillemet simple
\nnn le caractère 8 bits dont la valeur octale est nnn (de un à trois chiffres)
\xHH le caractère 8 bits dont la valeur hexadécimale est HH (un à deux symboles hexadécimaux)
\cx un caractère contrôle-x
Le résultat développé est protégé par des guillemets simples comme si le symbole dollar n'avait pas été présent.
Une chaîne entre guillemets doubles précédée d'un symbole dollar ($) conduira à la traduction de la chaîne selon le paramètre linguistique régional en vigueur. Si le paramètre linguistique régional courant est C ou POSIX,
le symbole dollar est ignoré. Si la chaîne est traduite et remplacée, le résultat est protégé par des guillemets doubles.