public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
* Absolute path in for loop / output?
@ 2021-09-07 15:21 Martin Post
       [not found] ` <78489a20-5148-4826-ab6a-b43fa48938d4n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Martin Post @ 2021-09-07 15:21 UTC (permalink / raw)
  To: pandoc-discuss


[-- Attachment #1.1: Type: text/plain, Size: 1091 bytes --]

I need to use Pandoc with absolute input and output paths in a shell 
script, like so:

#!/bin/bash

for f in "/users/myname/desktop/test/input/"*.md; \
do \
pandoc "$f" \
--standalone \
-o "/users/myname/desktop/test/output/"${f%.md}.htm; \
done

… which gives an error:

/users/myname/desktop/test/output//users/myname/desktop/test/input/1.htm: 
openFile: does not exist (No such file or directory)

(Removing the output path will render the files in the source directory, as 
expected.)

I realise the problem is probably my limited understanding of how the shell 
works, not something with Pandoc. I still hope someone here can help. Thank 
you.

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/78489a20-5148-4826-ab6a-b43fa48938d4n%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 1567 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Absolute path in for loop / output?
       [not found] ` <78489a20-5148-4826-ab6a-b43fa48938d4n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
@ 2021-09-07 15:49   ` Bastien DUMONT
  2021-09-07 17:06   ` John MacFarlane
  2021-09-07 19:26   ` Marc Chantreux
  2 siblings, 0 replies; 5+ messages in thread
From: Bastien DUMONT @ 2021-09-07 15:49 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw

The problem is purely related with your bash script, not with pandoc. You seem to have contradictory expectations about what the value of $f will be: in `pandoc "$f", you anticipate it to be "/users/myname/desktop/test/input/1.md" (which is right), while in `-o "/users/myname/desktop/test/output/"${f%.md}.htm", it is supposed to be only "1.md" (and it isn't, hence the error message).

A little trick: when you have error with bash scripts, it helps to run them with `bash -xv myscript.sh` in order to see what Bash does step by step and what are the parameter values.

Le Tuesday 07 September 2021 à 08:21:42AM, Martin Post a écrit :
> I need to use Pandoc with absolute input and output paths in a shell script,
> like so:
> 
> #!/bin/bash
> 
> for f in "/users/myname/desktop/test/input/"*.md; \
> do \
> pandoc "$f" \
> --standalone \
> -o "/users/myname/desktop/test/output/"${f%.md}.htm; \
> done
> 
> … which gives an error:
> 
> /users/myname/desktop/test/output//users/myname/desktop/test/input/1.htm:
> openFile: does not exist (No such file or directory)
> 
> (Removing the output path will render the files in the source directory, as
> expected.)
> 
> I realise the problem is probably my limited understanding of how the shell
> works, not something with Pandoc. I still hope someone here can help. Thank
> you.
> 
> 
> --
> You received this message because you are subscribed to the Google Groups
> "pandoc-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email
> to [1]pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To view this discussion on the web visit [2]https://groups.google.com/d/msgid/
> pandoc-discuss/78489a20-5148-4826-ab6a-b43fa48938d4n%40googlegroups.com.
> 
> References:
> 
> [1] mailto:pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> [2] https://groups.google.com/d/msgid/pandoc-discuss/78489a20-5148-4826-ab6a-b43fa48938d4n%40googlegroups.com?utm_medium=email&utm_source=footer

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/YTeKDuaTZt9ov62V%40localhost.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Absolute path in for loop / output?
       [not found] ` <78489a20-5148-4826-ab6a-b43fa48938d4n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
  2021-09-07 15:49   ` Bastien DUMONT
@ 2021-09-07 17:06   ` John MacFarlane
  2021-09-07 19:26   ` Marc Chantreux
  2 siblings, 0 replies; 5+ messages in thread
From: John MacFarlane @ 2021-09-07 17:06 UTC (permalink / raw)
  To: Martin Post, pandoc-discuss


Here $f is going to be an absolute path.
So you should not add a directory.

Just use

 -o "${f%.md}.htm"; \


Martin Post <martinpostberlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:

> I need to use Pandoc with absolute input and output paths in a shell 
> script, like so:
>
> #!/bin/bash
>
> for f in "/users/myname/desktop/test/input/"*.md; \
> do \
> pandoc "$f" \
> --standalone \
> -o "/users/myname/desktop/test/output/"${f%.md}.htm; \
> done
>
> … which gives an error:
>
> /users/myname/desktop/test/output//users/myname/desktop/test/input/1.htm: 
> openFile: does not exist (No such file or directory)
>
> (Removing the output path will render the files in the source directory, as 
> expected.)
>
> I realise the problem is probably my limited understanding of how the shell 
> works, not something with Pandoc. I still hope someone here can help. Thank 
> you.
>
> -- 
> You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/78489a20-5148-4826-ab6a-b43fa48938d4n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/m25yvc48o6.fsf%40MacBook-Pro-2.hsd1.ca.comcast.net.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Absolute path in for loop / output?
       [not found] ` <78489a20-5148-4826-ab6a-b43fa48938d4n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
  2021-09-07 15:49   ` Bastien DUMONT
  2021-09-07 17:06   ` John MacFarlane
@ 2021-09-07 19:26   ` Marc Chantreux
       [not found]     ` <YTe8189Jim/Iqif5-AWr1gsF+PRs9Vg2ZJzWmxBLO4URiXwcH@public.gmane.org>
  2 siblings, 1 reply; 5+ messages in thread
From: Marc Chantreux @ 2021-09-07 19:26 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw

hello,

> for f in "/users/myname/desktop/test/input/"*.md; \
> do \
> pandoc "$f" \
> --standalone \
> -o "/users/myname/desktop/test/output/"${f%.md}.htm; \
> done

close :) this should do the trick:

    base=/users/myname/desktop/test
    pushd $base/input
    for f in *.md ; do
        pandoc "$f" -s -o $base/output/${f.md}.htm
    done
    popd

if you use zsh and don't care about a subshell, i would have writen

    ( base=/users/myname/desktop/test
        cd $base/input
        for f (*.md) pandoc "$f" -s -o $base/output/$f:r.htm )

however i would like to mention make as a better solution:

* a makefile to do the same job will be

    BASE   = /users/myname/desktop/test
    SRCS  != ls ${BASE}/input/*.md
    PAGES  = ${SRCS:${BASE}/input/%.md=${BASE}/output/%.htm}
    all : ${PAGES}
    ${BASE}/output/%.htm: ${BASE}/input/%.md
        pandoc -s -o $@ $<
    clean:; rm -rf ${BASE}/o/*

* you can just type

    make        # build the missing pages one by one
    make -j4    # build the missing pages four by four
    make -b     # rebuild every pages
    make clean  # remove all the pages

regards
marc


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Absolute path in for loop / output?
       [not found]     ` <YTe8189Jim/Iqif5-AWr1gsF+PRs9Vg2ZJzWmxBLO4URiXwcH@public.gmane.org>
@ 2021-09-11 19:52       ` Martin Post
  0 siblings, 0 replies; 5+ messages in thread
From: Martin Post @ 2021-09-11 19:52 UTC (permalink / raw)
  To: pandoc-discuss


[-- Attachment #1.1: Type: text/plain, Size: 1681 bytes --]

Thank you, everyone. 

@ Marc: This is exactly what I was looking for.

On Tuesday, September 7, 2021 at 9:26:24 PM UTC+2 ei...-fbXiWI9j2LLYtjvyW6yDsg@public.gmane.org wrote:

> hello,
>
> > for f in "/users/myname/desktop/test/input/"*.md; \
> > do \
> > pandoc "$f" \
> > --standalone \
> > -o "/users/myname/desktop/test/output/"${f%.md}.htm; \
> > done
>
> close :) this should do the trick:
>
> base=/users/myname/desktop/test
> pushd $base/input
> for f in *.md ; do
> pandoc "$f" -s -o $base/output/${f.md}.htm
> done
> popd
>
> if you use zsh and don't care about a subshell, i would have writen
>
> ( base=/users/myname/desktop/test
> cd $base/input
> for f (*.md) pandoc "$f" -s -o $base/output/$f:r.htm )
>
> however i would like to mention make as a better solution:
>
> * a makefile to do the same job will be
>
> BASE = /users/myname/desktop/test
> SRCS != ls ${BASE}/input/*.md
> PAGES = ${SRCS:${BASE}/input/%.md=${BASE}/output/%.htm}
> all : ${PAGES}
> ${BASE}/output/%.htm: ${BASE}/input/%.md
> pandoc -s -o $@ $<
> clean:; rm -rf ${BASE}/o/*
>
> * you can just type
>
> make # build the missing pages one by one
> make -j4 # build the missing pages four by four
> make -b # rebuild every pages
> make clean # remove all the pages
>
> regards
> marc
>

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/0d4acc1e-9566-4d61-8c55-57055b19ae0en%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 2552 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-11 19:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-07 15:21 Absolute path in for loop / output? Martin Post
     [not found] ` <78489a20-5148-4826-ab6a-b43fa48938d4n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2021-09-07 15:49   ` Bastien DUMONT
2021-09-07 17:06   ` John MacFarlane
2021-09-07 19:26   ` Marc Chantreux
     [not found]     ` <YTe8189Jim/Iqif5-AWr1gsF+PRs9Vg2ZJzWmxBLO4URiXwcH@public.gmane.org>
2021-09-11 19:52       ` Martin Post

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 NNTP newsgroup(s).