Donc j'essaie de comprendre ce comportement bizarre.Exécuter des commandes Linux avec des guillemets
$ hello hello
-ksh: hello: not found [No such file or directory]
$ "hello hello"
-ksh: hello hello: not found [No such file or directory]
$ echo hello hello
hello hello
$ `echo hello hello`
-ksh: hello: not found [No such file or directory]
$ echo \"hello hello\"
"hello hello"
$ `echo \"hello hello\"`
-ksh: "hello: not found [No such file or directory]
Les 2ème et 6ème commandes sont les plus pertinentes pour ma question. Si je cours cette deuxième commande "hello hello"
, alors il évaluera cela comme un grand argument. Toutefois, si j'essaie d'exécuter cette dernière commande
`echo \"hello hello\"`
alors il devrait avoir le même comportement? Mais il voit "hello
comme son propre mot indépendant. Est-ce que certains peuvent expliquer cela et comment je peux obtenir que cette 6ème commande fonctionne comme la 2ème commande, de telle sorte qu'elle évalue "bonjour bonjour" comme une déclaration entière?
(Ceci a une application plus pratique, mais c'était le plus petit exemple que je pouvais produire).
Merci d'avance!
EDIT: Je vois que j'ai reçu un downvote, donc je serai plus concret sur le problème que je rencontre.
rcli4 6379 keys AAA* | sed -e "s/.*/'&'/" | while read line; do rcli4 6379 get $line; done
Notez que rcli4
est juste un alias pour redis-cli -p
. Je continue d'obtenir un
(error) ERR wrong number of arguments for 'get' command
qui est due à l'analyse incorrecte des guillemets. J'ai essayé différentes combinaisons de choses comme l'ajout de citations, la suppression de l'instruction sed, etc. en vain, mais je pense qu'être capable de résoudre mon problème hello bonjour d'origine me donnera suffisamment d'informations sur la façon de résoudre mon problème spécifique.
'ksh' n'est pas' bash', vous devrez peut-être corriger vos balises ou votre shell –
A l'intérieur d'une chaîne entre guillemets, une citation est juste un autre caractère. Il n'a pas de pouvoir spécial. – John1024
@EricRenouf Oups!Merci –