Also versuche ich, dieses seltsame Verhalten herauszufinden.Ausführen von Linux-Befehlen in Anführungszeichen
$ 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]
Die 2. und 6. Befehle sind die relevantesten für meine Frage. Wenn ich diesen zweiten Befehl "hello hello"
ausführen, wird es das als ein großes Argument auswerten. Wenn ich jedoch versuche, den letzten Befehl auszuführen
`echo \"hello hello\"`
dann sollte es das gleiche Verhalten haben? Aber es sieht "hello
als sein eigenes unabhängiges Wort. Können einige das erklären und wie kann ich diesen 6. Befehl wie den 2. Befehl arbeiten lassen, so dass er "Hallo Hallo" als eine ganze Aussage auswertet?
(Dies hat eine praktischere Anwendung, aber das war das kleinste Beispiel, das ich produzieren könnte).
Vielen Dank im Voraus!
EDIT: Ich sehe, ich habe einen Downvote, also werde ich konkreter sein, auf welches Problem ich stoße.
rcli4 6379 keys AAA* | sed -e "s/.*/'&'/" | while read line; do rcli4 6379 get $line; done
Beachten Sie, dass rcli4
ist nur ein Alias für redis-cli -p
. Ich bekomme immer eine
(error) ERR wrong number of arguments for 'get' command
, die aufgrund der Anführungszeichen falsch analysiert wird. Ich habe verschiedene Kombinationen von Dingen ausprobiert, wie das Hinzufügen von mehr Anführungszeichen, das Entfernen dieser sed-Anweisung usw., aber ich denke, dass ich mein Problem lösen kann.
'ksh' ist nicht' bash', müssen Sie möglicherweise Ihre Tags oder Ihre Shell reparieren –
Innerhalb einer Zeichenfolge in Anführungszeichen ist ein Zitat nur ein anderes Zeichen. Es hat keine besondere Kraft. – John1024
@EricRenouf Whoops!Danke, –