From user-return-22555-apmail-karaf-user-archive=karaf.apache.org@karaf.apache.org Wed Jul 22 11:20:30 2020 Return-Path: X-Original-To: apmail-karaf-user-archive@locus.apache.org Delivered-To: apmail-karaf-user-archive@locus.apache.org Received: from mailroute1-lw-us.apache.org (mailroute1-lw-us.apache.org [207.244.88.153]) by minotaur.apache.org (Postfix) with ESMTP id 643541AD82 for ; Wed, 22 Jul 2020 11:20:30 +0000 (UTC) Received: from mail.apache.org (localhost [127.0.0.1]) by mailroute1-lw-us.apache.org (ASF Mail Server at mailroute1-lw-us.apache.org) with SMTP id 80DBD125660 for ; Wed, 22 Jul 2020 11:20:29 +0000 (UTC) Received: (qmail 64449 invoked by uid 500); 22 Jul 2020 11:20:28 -0000 Delivered-To: apmail-karaf-user-archive@karaf.apache.org Received: (qmail 64392 invoked by uid 500); 22 Jul 2020 11:20:28 -0000 Mailing-List: contact user-help@karaf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@karaf.apache.org Delivered-To: mailing list user@karaf.apache.org Received: (qmail 64382 invoked by uid 99); 22 Jul 2020 11:20:28 -0000 Received: from ui-eu-02.ponee.io (HELO localhost) (116.202.110.96) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Jul 2020 11:20:28 +0000 MIME-Version: 1.0 X-Mailer: LuaSocket 3.0-rc1 References: <0476EC45-111D-4C48-B0A0-D855E099CDDC@nanthrax.net> <272928C6-DD2E-4286-808E-C0A3180F6ABC@nanthrax.net> From: J. Brebec Content-Type: text/plain; charset=utf-8 In-Reply-To: <0476EC45-111D-4C48-B0A0-D855E099CDDC@nanthrax.net> x-ponymail-agent: PonyMail Composer/0.2 Subject: Re: Shell & Quote x-ponymail-sender: 38bd1c0b3d293c26d6dca1b203e99c4b3151d422 Date: Wed, 22 Jul 2020 11:20:27 -0000 Message-ID: To: Sorry. My issue is not about double quote or spaces, it's about spaces and single quote (or apostrophe). For example, I have commands which take a query as parameter. I used to write the query with doubles quotes, because there is a lot of spaces. However, I can't use an apostrophe in this kind of query. If I use your example below, you can see it "looks" like using a quote worked because the syntax error disappears. however it's not, an invalid user has been created with a backslash. karaf@root()> feature:repo-add mvn:org.apache.karaf.examples/karaf-command-example-features/4.2.9/xml Adding feature url mvn:org.apache.karaf.examples/karaf-command-example-features/4.2.9/xml karaf@root()> feature:install karaf-command-example-provider karaf@root()> feature:install karaf-command-example karaf@root()> booking:list ID | Flight | Customer ---+--------+--------- karaf@root()> booking:add X1 "John O'Connor" Error executing command: unexpected EOT looking for matching quote: ' karaf@root()> booking:add X1 "John O\'Connor" karaf@root()> booking:list ID | Flight | Customer --------+----------------+--------- 9198438 | John O\'Connor | X1 karaf@root()> booking:add X2 John\ O\'Connor karaf@root()> booking:list ID | Flight | Customer --------+----------------+--------- 6573975 | John O'Connor | X2 9198438 | John O\'Connor | X1 On 2020/07/22 07:50:50, Jean-Baptiste Onofre wrote: > Sorry I don’t understand. > > The quote are used as you can see in my previous email (John Doe is without quote but with space). > > Regards > JB > > > Le 22 juil. 2020 à 09:32, J. Brebec a écrit : > > > > Thanks. > > > > It works indeed if I doesn't use double quotes and quote every spaces and single quote. It just looks.. not usual to have to use a backslash before a single quote to be valid syntaxically but this backslash is visible by the command. > > > > I have this behavior in all my command (and the camel too), but your workaround helped me, thanks. > > > > > > On 2020/07/22 06:29:10, Jean-Baptiste Onofre wrote: > >> Hi, > >> > >> I just tested with Karaf Command example: > >> > >> karaf@root()> feature:repo-add mvn:org.apache.karaf.examples/karaf-command-example-features/4.2.9/xml > >> Adding feature url mvn:org.apache.karaf.examples/karaf-command-example-features/4.2.9/xml > >> karaf@root()> feature:install karaf-command-example-provider > >> karaf@root()> feature:install karaf-command-example > >> karaf@root()> booking:list > >> ID │ Flight │ Customer > >> ───┼────────┼───────── > >> karaf@root()> booking:add AF520 "John Doe" > >> karaf@root()> booking:list > >> ID │ Flight │ Customer > >> ────────┼──────────┼───────── > >> 7187096 │ John Doe │ AF520 > >> > >> It just works fine with double quotes as you can see. > >> > >> Backslash also works: > >> > >> karaf@root()> booking:add FOO Other\ Test > >> karaf@root()> booking:list > >> ID │ Flight │ Customer > >> ────────┼────────────┼───────── > >> 2677320 │ Other Test │ FOO > >> 7187096 │ John Doe │ AF520 > >> > >> Do you have the problem specifically with camel commands or generally speaking ? > >> > >> If it’s only with Camel commands, I will take a look specifically to Camel. > >> > >> Regards > >> JB > >> > >>> Le 21 juil. 2020 à 15:24, J. Brebec a écrit : > >>> > >>> A simple example with camel and Karaf 4.2.9: > >>> > >>> karaf@root()> camel:component-list "a'b" > >>> Error executing command: unexpected EOT looking for matching quote: ' > >>> karaf@root()> camel:component-list "a\'b" > >>> Camel context a\'b not found. > >>> > >>> Without a quote "a'b" is invalid. > >>> With a backslash, "a\'b" is valid, however, the command "sees" the backslash (and I don't think every command should handle quoting in an argument?) > >>> > >>> If I use a native gogo(jline?) command, it's working: > >>> > >>> karaf@root()> echo "a\'b" > >>> a'b > >>> > >>> > >>> > >>> > >>> > >>> On 2020/07/21 12:13:42, Jean-Baptiste Onofre wrote: > >>>> Hi, > >>>> > >>>> Assuming the last argument is String, did you try " and \" ? > >>>> > >>>> I just try and it works fine for me (on Linux and Mac). > >>>> > >>>> Can you provide some environment details to me please ? > >>>> > >>>> Thanks ! > >>>> Regards > >>>> JB > >>>> > >>>>> Le 21 juil. 2020 à 10:08, J. Brebec a écrit : > >>>>> > >>>>> Hello, > >>>>> > >>>>> I have a Karaf shell command which take a String parameters. > >>>>> How can I call it with a parameters with space and quote ? > >>>>> > >>>>> this doesn't work (the command is not executed with a error about a non-matched quote) > >>>>> ns:mycmd "xx n'est pas conforme" > >>>>> > >>>>> this doesn't work either: the command is executed, but the backlash is seen by my command > >>>>> ns:mycmd "xx n\'est pas conforme" > >>>>> > >>>>> I didn't found the right syntax.. > >>>>> > >>>>> thanks! > >>>>> > >>>>> Jérémie > >>>>> > >>>> > >>>> > >> > >> > >