* [babel] Sh problem when echo'ing input data with ' inside @ 2011-01-17 12:42 Sébastien Vauban 2011-01-17 16:24 ` Eric Schulte 2011-01-17 20:00 ` Achim Gratz 0 siblings, 2 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-17 12:42 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi, I tried to work on a CSV2Ledger, accepting the particular (European) CSV format of my bank: * Data #+results: excel-from-bank #+begin_example Numéro du compte :;979-9500975-24;Compte Maxi Date valeur;Référence de l'opération;Description;Montant de l'opération;Devise;Date d'opération;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; #+end_example * "Europeanize" the CSV file Here, we have to make several manipulations on the input file, such as: - remove dots from amounts - replace commas from amounts by dots - replace semi-commas by commas - etc. My goal is to make that as a suite of bash commands (=echo | cmd 1 | cmd 2=), tangled in a script file. However, I can't do any work on the input file, the very basic echo command already giving an error: #+begin_src sh :var data=excel-from-bank :results output echo "$data" #+end_src #+results: Code block produced no output. #+begin_src stderr sh: line 3: unexpected EOF while looking for matching `'' sh: line 10: syntax error: unexpected end of file #+end_src In this sample, this is due to the apostrophe in the header line ("Montant de l'opération"). Any idea on how to: - circumvent such problem? - or, eventually, do this better? Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 12:42 [babel] Sh problem when echo'ing input data with ' inside Sébastien Vauban @ 2011-01-17 16:24 ` Eric Schulte 2011-01-17 19:29 ` Sébastien Vauban 2011-01-17 20:00 ` Achim Gratz 1 sibling, 1 reply; 17+ messages in thread From: Eric Schulte @ 2011-01-17 16:24 UTC (permalink / raw) To: Sébastien Vauban; +Cc: emacs-orgmode Hi Seb, I can't reproduce this problem, on my system, I get the following correct behavior #+results: excel-from-bank #+begin_example Num.ro du compte :;979-9500975-24;Compte Maxi Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; #+end_example #+begin_src sh :var data=excel-from-bank :results output echo "$data" #+end_src #+results: : Num.ro du compte :;979-9500975-24;Compte Maxi : Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : : 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; : 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; : 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; and the sh code block expands to the following (with C-c C-v v) which is not affected by commas... #+begin_src sh data=$(cat <<BABEL_STRING Num.ro du compte :;979-9500975-24;Compte Maxi Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; BABEL_STRING ) echo "$data" #+end_src Are you on a windows machine? I'm not sure what else could be different about the shell environment on our machines. Cheers -- Eric note: some of the characters in your email weren't printable when I tried to send this with gnus, so they've been replaced with "."s Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes: > Hi, > > I tried to work on a CSV2Ledger, accepting the particular (European) CSV > format of my bank: > > * Data > > #+results: excel-from-bank > #+begin_example > Num.ro du compte :;979-9500975-24;Compte Maxi > Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : > 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; > 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; > 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; > #+end_example > > * "Europeanize" the CSV file > > Here, we have to make several manipulations on the input file, such as: > - remove dots from amounts > - replace commas from amounts by dots > - replace semi-commas by commas > - etc. > > My goal is to make that as a suite of bash commands (=echo | cmd 1 | cmd 2=), > tangled in a script file. > > However, I can't do any work on the input file, the very basic echo command > already giving an error: > > #+begin_src sh :var data=excel-from-bank :results output > echo "$data" > #+end_src > > #+results: > Code block produced no output. > > #+begin_src stderr > sh: line 3: unexpected EOF while looking for matching `'' > sh: line 10: syntax error: unexpected end of file > #+end_src > > In this sample, this is due to the apostrophe in the header line ("Montant de > l'opération"). > > Any idea on how to: > - circumvent such problem? > - or, eventually, do this better? > > Best regards, > Seb ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 16:24 ` Eric Schulte @ 2011-01-17 19:29 ` Sébastien Vauban 2011-01-17 19:54 ` Eric Schulte 0 siblings, 1 reply; 17+ messages in thread From: Sébastien Vauban @ 2011-01-17 19:29 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Eric, "Eric Schulte" wrote: >> I tried to work on a CSV2Ledger, accepting the particular (European) CSV >> format of my bank: >> >> * "Europeanize" the CSV file >> >> Here, we have to make several manipulations on the input file [...]. My >> goal is to make that as a suite of bash commands (=echo | cmd 1 | cmd 2=), >> tangled in a script file. >> >> However, I can't do any work on the input file, the very basic echo command >> already giving an error: >> >> #+begin_src stderr >> sh: line 3: unexpected EOF while looking for matching `'' >> sh: line 10: syntax error: unexpected end of file >> #+end_src >> >> In this sample, this is due to the apostrophe in the header line ("Montant de >> l'opération"). > > I can't reproduce this problem, on my system, I get the following > correct behavior > > #+results: excel-from-bank > #+begin_example > Num.ro du compte :;979-9500975-24;Compte Maxi > Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : > 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; > 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; > 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; > #+end_example > > #+begin_src sh :var data=excel-from-bank :results output > echo "$data" > #+end_src > > #+results: > : Num.ro du compte :;979-9500975-24;Compte Maxi > : Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : > : 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; > : 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; > : 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; > > and the sh code block expands to the following (with C-c C-v v) which is > not affected by commas... I've no trouble with commas, except that it's not an American formatting for amounts. Though, I does well have problems, as showed, with the apostrophe... Previewing does work for me as well: > #+begin_src sh > data=$(cat <<BABEL_STRING > Num.ro du compte :;979-9500975-24;Compte Maxi > Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : > 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; > 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; > 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; > BABEL_STRING > ) > echo "$data" > #+end_src Evaluation does not. > Are you on a windows machine? I'm not sure what else could be different > about the shell environment on our machines. Yes, it is on Windows ;-) Though, with Cygwin bash support... which should behave as on any Linux... > note: some of the characters in your email weren't printable when I > tried to send this with gnus, so they've been replaced with "."s These are French accentuated letters. >> Any idea on how to: >> - circumvent such problem? >> - or, eventually, do this better? No idea on any workaround, then? ;-( Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 19:29 ` Sébastien Vauban @ 2011-01-17 19:54 ` Eric Schulte 2011-01-17 22:49 ` Sébastien Vauban 0 siblings, 1 reply; 17+ messages in thread From: Eric Schulte @ 2011-01-17 19:54 UTC (permalink / raw) To: Sébastien Vauban; +Cc: emacs-orgmode >> >> and the sh code block expands to the following (with C-c C-v v) which is >> not affected by commas... > > I've no trouble with commas, except that it's not an American formatting for > amounts. Though, I does well have problems, as showed, with the apostrophe... > Sorry, I mis-typed, as far as I can tell the apostrophe works on my machine without causing any issues. > > Previewing does work for me as well: > >> #+begin_src sh >> data=$(cat <<BABEL_STRING >> Num.ro du compte :;979-9500975-24;Compte Maxi >> Date valeur;R.f.rence de l'op.ration;Description;Montant de >> l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la >> contrepartie :;Communication 1 :;Communication 2 : >> 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; >> 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; >> 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; >> BABEL_STRING >> ) >> echo "$data" >> #+end_src > if you execute the previewed code block as an independent shell script on your machine does it throw errors or does it echo correctly? > > Evaluation does not. > >> Are you on a windows machine? I'm not sure what else could be different >> about the shell environment on our machines. > > Yes, it is on Windows ;-) Though, with Cygwin bash support... which should > behave as on any Linux... > >> note: some of the characters in your email weren't printable when I >> tried to send this with gnus, so they've been replaced with "."s > > These are French accentuated letters. > >>> Any idea on how to: >>> - circumvent such problem? >>> - or, eventually, do this better? > > No idea on any workaround, then? ;-( > I can't reproduce the problem locally, and I believe that this is due to differences in our shell environments rather than Emacs-specific issues, so it is hard for me to diagnose or propose a solution. Sorry I can't be of more help -- Eric > > Best regards, > Seb ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 19:54 ` Eric Schulte @ 2011-01-17 22:49 ` Sébastien Vauban 0 siblings, 0 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-17 22:49 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Eric, "Eric Schulte" wrote: > if you execute the previewed code block as an independent shell script > on your machine does it throw errors or does it echo correctly? On this one: the behavior seen from Org Babel is the same as the one seen when saving the previewed script as an executable file and launching it from Bash. No diff. Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 12:42 [babel] Sh problem when echo'ing input data with ' inside Sébastien Vauban 2011-01-17 16:24 ` Eric Schulte @ 2011-01-17 20:00 ` Achim Gratz 2011-01-17 20:29 ` Eric Schulte 2011-01-17 21:36 ` Achim Gratz 1 sibling, 2 replies; 17+ messages in thread From: Achim Gratz @ 2011-01-17 20:00 UTC (permalink / raw) To: emacs-orgmode Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes: > However, I can't do any work on the input file, the very basic echo command > already giving an error: This is because quoting the arguments to echo does not work when your input contains unescaped quote characters. I've no idea how exactly babel tries to get it's arguments to the command, but it looks like it simply copies text and executes the resulting script? If it could open a pipe and send the data through, no quoting would be necessary since the shell never sees the data. I'm not sure if that's possible because I can't find specific documentation on language "sh". [Note: orgmode online manual links to http://orgmode.org/worg/org-contrib/babel/languages/ which is broken.] > #+begin_src sh :var data=excel-from-bank :results output > echo "$data" > #+end_src So, you're using a un*xoid? This is your lucky day, since in your case you should be able to use a here script: #+begin_src sh :var data=excel-from-bank :results output echo <<EOF | cmd1 | cmd2 $data EOF #+end_src HTH, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptations for KORG EX-800 and Poly-800MkII V0.9: http://Synth.Stromeko.net/Downloads.html#KorgSDada ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 20:00 ` Achim Gratz @ 2011-01-17 20:29 ` Eric Schulte 2011-01-17 21:36 ` Achim Gratz 1 sibling, 0 replies; 17+ messages in thread From: Eric Schulte @ 2011-01-17 20:29 UTC (permalink / raw) To: Achim Gratz; +Cc: emacs-orgmode Achim Gratz <Stromeko@nexgo.de> writes: > Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> > writes: >> However, I can't do any work on the input file, the very basic echo command >> already giving an error: > > This is because quoting the arguments to echo does not work when your > input contains unescaped quote characters. I've no idea how exactly > babel tries to get it's arguments to the command, but it looks like it > simply copies text and executes the resulting script? If it could open > a pipe and send the data through, no quoting would be necessary since > the shell never sees the data. I'm not sure if that's possible because > I can't find specific documentation on language "sh". > > [Note: orgmode online manual links to > http://orgmode.org/worg/org-contrib/babel/languages/ which is broken.] > yes, the Worg documentation is in dire need of maintenance, see below for discussion of how arguments are passed in the sh blocks > >> #+begin_src sh :var data=excel-from-bank :results output >> echo "$data" >> #+end_src > > So, you're using a un*xoid? This is your lucky day, since in your case you > should be able to use a here script: > > #+begin_src sh :var data=excel-from-bank :results output > echo <<EOF | cmd1 | cmd2 > $data > EOF > #+end_src > here scripts are how Babel sends data through to a shell script, as far as I know they should have no issues with quotes (or any other character) specifically, the following code block #+results: something #+begin_example something and something else with apostrophes ' and quotes " this should all work... #+end_example #+begin_src sh :var data=something echo $data #+end_src Expands to #+begin_src sh data=$(cat <<BABEL_STRING something and something else with apostrophes ' and quotes " this should all work... BABEL_STRING ) echo $data #+end_src Cheers -- Eric ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 20:00 ` Achim Gratz 2011-01-17 20:29 ` Eric Schulte @ 2011-01-17 21:36 ` Achim Gratz 2011-01-17 22:39 ` Sébastien Vauban 1 sibling, 1 reply; 17+ messages in thread From: Achim Gratz @ 2011-01-17 21:36 UTC (permalink / raw) To: emacs-orgmode Achim Gratz <Stromeko@nexgo.de> writes: > #+begin_src sh :var data=excel-from-bank :results output > echo <<EOF | cmd1 | cmd2 > $data > EOF > #+end_src Sent too soon: use cat, not echo. Actually that is redundant, too: #+begin_src sh :var data=excel-from-bank :results output cmd1 <<EOF | cmd2 $data EOF #+end_src Or even simpler (but that might be a bashism...): #+begin_src sh :var data=excel-from-bank :results output cmd1 <<<"$data" | cmd2 #+end_src And I missed the preview in Erics post, which gave me the clue I was looking for; the script produced by babel should actually look like this: #+begin_src sh data=$(cat <<'BABEL_STRING' Num.ro du compte :;979-9500975-24;Compte Maxi Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; BABEL_STRING ) echo "$data" #+end_src That is no indentation and the here-tag should be in quotes (otherwise the here-script is subject to shell expansion). It's probably possible to do a contrived redirection and not use a variable to store the data, but I'm afraid I won't grok this today. Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Wavetables for the Terratec KOMPLEXER: http://Synth.Stromeko.net/Downloads.html#KomplexerWaves ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 21:36 ` Achim Gratz @ 2011-01-17 22:39 ` Sébastien Vauban 2011-01-17 22:51 ` Achim Gratz 2011-01-18 9:22 ` Sébastien Vauban 0 siblings, 2 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-17 22:39 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Achim and Eric, Achim Gratz wrote: > The script produced by babel should actually look like this: > > #+begin_src sh > data=$(cat <<'BABEL_STRING' > Num.ro du compte :;979-9500975-24;Compte Maxi > Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : > 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; > 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; > 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; > BABEL_STRING > ) > echo "$data" > #+end_src > > That is no indentation and the here-tag should be in quotes (otherwise the > here-script is subject to shell expansion). The above, from which I even removed the accentuated characters (from French), still does not work... Now, I can imagine it is due to Cygwin, not to Emacs/Org/Babel. Though, that's a problem in general for the use of sh blocks from Org... under Windows, then. - Has anyone any experience with this? - Can some Bash user confirm what I see? - Can some Windows user confirm this with other Unix-emulation shells (MinGW and the like)? > It's probably possible to do a contrived redirection and not use a variable > to store the data, but I'm afraid I won't grok this today. Or maybe using a real file as temporary storage? Overkill, or simply needed? Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 22:39 ` Sébastien Vauban @ 2011-01-17 22:51 ` Achim Gratz 2011-01-18 7:02 ` Sébastien Vauban 2011-01-18 9:22 ` Sébastien Vauban 1 sibling, 1 reply; 17+ messages in thread From: Achim Gratz @ 2011-01-17 22:51 UTC (permalink / raw) To: emacs-orgmode Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes: > The above, from which I even removed the accentuated characters (from French), > still does not work... That's strange. > Now, I can imagine it is due to Cygwin, not to Emacs/Org/Babel. Though, that's > a problem in general for the use of sh blocks from Org... under Windows, then. I can try tomorrow, I won't start the Windows box today... > Or maybe using a real file as temporary storage? Overkill, or simply needed? Temporary files should work from emacs, but on Windows it is somewhat troublesome to reliably get rid of them when they're no longer needed. Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 22:51 ` Achim Gratz @ 2011-01-18 7:02 ` Sébastien Vauban 0 siblings, 0 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-18 7:02 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Achim, Achim Gratz wrote: > Sébastien Vauban <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: >> The above, from which I even removed the accentuated characters (from French), >> still does not work... > > That's strange. > >> Now, I can imagine it is due to Cygwin, not to Emacs/Org/Babel. Though, that's >> a problem in general for the use of sh blocks from Org... under Windows, then. > > I can try tomorrow, I won't start the Windows box today... Thanks for trying. Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-17 22:39 ` Sébastien Vauban 2011-01-17 22:51 ` Achim Gratz @ 2011-01-18 9:22 ` Sébastien Vauban 2011-01-18 16:24 ` Eric Schulte ` (2 more replies) 1 sibling, 3 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-18 9:22 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Eric and Achim, Sébastien Vauban wrote: > Achim Gratz wrote: >> The script produced by babel should actually look like this: >> >> #+begin_src sh >> data=$(cat <<'BABEL_STRING' >> Num.ro du compte :;979-9500975-24;Compte Maxi >> Date valeur;R.f.rence de l'op.ration;Description;Montant de l'op.ration;Devise;Date d'op.ration;Compte de contrepartie;Nom de la contrepartie :;Communication 1 :;Communication 2 : >> 04-06-2009;A9F04NT01WK300TG;Virem. internet;420,00;EUR;04-06-2009;799-5900947-23;PAYEE ONE; ; >> 24-02-2009;A9B24NT012K4018Z;Virem. internet;-54,93;EUR;24-02-2009;799-9974005-30;ME;Eigen rekening; >> 18-05-2008;A8E19NT000S604QI;Virem. internet;-1.000,00;EUR;19-05-2008;799-8068445-18;PAYEE TWO; ; >> BABEL_STRING >> ) >> echo "$data" >> #+end_src >> >> That is no indentation and the here-tag should be in quotes (otherwise the >> here-script is subject to shell expansion). > > The above, from which I even removed the accentuated characters (from French), > still does not work... > > Now, I can imagine it is due to Cygwin, not to Emacs/Org/Babel. Though, that's > a problem in general for the use of sh blocks from Org... under Windows, then. > > - Has anyone any experience with this? > - Can some Bash user confirm what I see? > - Can some Windows user confirm this with other Unix-emulation shells (MinGW > and the like)? I asked the question on the Cygwin mailing list, and got an answer from Tobias Schlottke, telling me to use the 'plain old' syntax (=`...`= instead of =$(...)=): #+begin_src sh data=`cat <<EOF ... EOF ` echo "$data" #+end_src and... it indeed works! Can we move to that syntax? Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-18 9:22 ` Sébastien Vauban @ 2011-01-18 16:24 ` Eric Schulte 2011-01-18 17:31 ` Sébastien Vauban 2011-01-18 18:23 ` Achim Gratz 2011-01-20 19:17 ` Achim Gratz 2 siblings, 1 reply; 17+ messages in thread From: Eric Schulte @ 2011-01-18 16:24 UTC (permalink / raw) To: Sébastien Vauban; +Cc: emacs-orgmode > > I asked the question on the Cygwin mailing list, and got an answer from Tobias > Schlottke, telling me to use the 'plain old' syntax (=`...`= instead of > =$(...)=): > > #+begin_src sh > data=`cat <<EOF > ... > EOF > ` > echo "$data" > #+end_src > > and... it indeed works! > > Can we move to that syntax? > I just made this customizable, after a git pull the following elisp code will use that syntax on your system. #+begin_src emacs-lisp (setq org-babel-sh-var-quote-fmt "`cat <<'BABEL_TABLE'\n%s\nBABEL_TABLE\n`") #+end_src Best -- Eric ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-18 16:24 ` Eric Schulte @ 2011-01-18 17:31 ` Sébastien Vauban 0 siblings, 0 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-18 17:31 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Eric, "Eric Schulte" wrote: >> I asked the question on the Cygwin mailing list, and got an answer from Tobias >> Schlottke, telling me to use the 'plain old' syntax (=`...`= instead of >> =$(...)=): >> >> #+begin_src sh >> data=`cat <<EOF >> ... >> EOF >> ` >> echo "$data" >> #+end_src >> >> and... it indeed works! >> >> Can we move to that syntax? > > I just made this customizable, after a git pull the following elisp code > will use that syntax on your system. > > #+begin_src emacs-lisp > (setq org-babel-sh-var-quote-fmt "`cat <<'BABEL_TABLE'\n%s\nBABEL_TABLE\n`") > #+end_src That's, indeed, better than what I had in mind, as it now is customizable... ... and, of course, that does the trick! Thanks a lot for your prompt fix. BTW, I would, though, advice to make this the default, as it should be fully functional under any Linux, and then would be directly usable by any user on Windows/Cygwin, without having to wonder why sh code blocks don't work the way they should. Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-18 9:22 ` Sébastien Vauban 2011-01-18 16:24 ` Eric Schulte @ 2011-01-18 18:23 ` Achim Gratz 2011-01-20 19:17 ` Achim Gratz 2 siblings, 0 replies; 17+ messages in thread From: Achim Gratz @ 2011-01-18 18:23 UTC (permalink / raw) To: emacs-orgmode Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes: > I asked the question on the Cygwin mailing list, and got an answer from Tobias > Schlottke, telling me to use the 'plain old' syntax (=`...`= instead of > =$(...)=): I can confirm. This is really bad, since now you'd have to escape backticks in the data coming from emacs. Do you have a link to the discussion, provided there is a web-mirror of the mailing list someplace? I'm a bit out of my waters here since mostly I'm using tcsh, but it appears that dash on cygwin (not ash, even though dash is just a symlink to ash) does the right thing. It is also vastly smaller than bash, so you might just use it for babel scripting. > Can we move to that syntax? For the reason above this would not be safe without more changes to babel and backticks are actively discouraged to use in new scripts by just about any shell introduction/ FAQ for years now. Eric has implemented a workaround and the problem deserves to be documented, though. Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptation for Waldorf microQ V2.22R2: http://Synth.Stromeko.net/Downloads.html#WaldorfSDada ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-18 9:22 ` Sébastien Vauban 2011-01-18 16:24 ` Eric Schulte 2011-01-18 18:23 ` Achim Gratz @ 2011-01-20 19:17 ` Achim Gratz 2011-01-20 22:12 ` Sébastien Vauban 2 siblings, 1 reply; 17+ messages in thread From: Achim Gratz @ 2011-01-20 19:17 UTC (permalink / raw) To: emacs-orgmode Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes: > I asked the question on the Cygwin mailing list, and got an answer from Tobias > Schlottke, telling me to use the 'plain old' syntax (=`...`= instead of > =$(...)=): On further investigation, this is a bug in bash3, fixed in bash4 (hence why I didn't see it on Linux). Bash4 is now available as "experimental" in the latest version of Cygwin. It's a bit tricky to install since you will also need the experimental version of libreadline7 (package version 6.1) and the setup kind of works against you: I've not managed to install both of them in one go and you will need to be careful with updates since I believe setup will always try to reverse these to the non-experimental versions unless you allow them globally (which I don't want). In any case, the problem with the '$( )' construct is indeed fixed and the next Cygwin release will hopefully have this new bash as standard. Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [babel] Sh problem when echo'ing input data with ' inside 2011-01-20 19:17 ` Achim Gratz @ 2011-01-20 22:12 ` Sébastien Vauban 0 siblings, 0 replies; 17+ messages in thread From: Sébastien Vauban @ 2011-01-20 22:12 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Achim, Achim Gratz wrote: > Sébastien Vauban <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: >> I asked the question on the Cygwin mailing list, and got an answer from Tobias >> Schlottke, telling me to use the 'plain old' syntax (=`...`= instead of >> =$(...)=): > > On further investigation, this is a bug in bash3, fixed in bash4 (hence why > I didn't see it on Linux). Bash4 is now available as "experimental" in the > latest version of Cygwin. It's a bit tricky to install since you will also > need the experimental version of libreadline7 (package version 6.1) and the > setup kind of works against you: I've not managed to install both of them in > one go and you will need to be careful with updates since I believe setup > will always try to reverse these to the non-experimental versions unless you > allow them globally (which I don't want). In any case, the problem with the > '$( )' construct is indeed fixed and the next Cygwin release will hopefully > have this new bash as standard. Thanks a lot for the follow-up, and for the above details about the problem! Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2011-01-20 22:12 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-01-17 12:42 [babel] Sh problem when echo'ing input data with ' inside Sébastien Vauban 2011-01-17 16:24 ` Eric Schulte 2011-01-17 19:29 ` Sébastien Vauban 2011-01-17 19:54 ` Eric Schulte 2011-01-17 22:49 ` Sébastien Vauban 2011-01-17 20:00 ` Achim Gratz 2011-01-17 20:29 ` Eric Schulte 2011-01-17 21:36 ` Achim Gratz 2011-01-17 22:39 ` Sébastien Vauban 2011-01-17 22:51 ` Achim Gratz 2011-01-18 7:02 ` Sébastien Vauban 2011-01-18 9:22 ` Sébastien Vauban 2011-01-18 16:24 ` Eric Schulte 2011-01-18 17:31 ` Sébastien Vauban 2011-01-18 18:23 ` Achim Gratz 2011-01-20 19:17 ` Achim Gratz 2011-01-20 22:12 ` Sébastien Vauban
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).