Frederico Bruni:
...
> Enter Documentation/it/notation and run this:
> 
> #!/bin/bash
> LIST="$(grep -oh -e @ref{.*} *.itely | sort -u)"
> for i in $LIST; do
>     echo $i
> #    echo -n "Replace" $i "with the translated node: "
> #    read NODE
> #    if $NODE=""; then exit
> #    else
> #        sed "s|$i|$NODE|g" *.itely
> #    fi
> done

 This doesn't work:
$ LIST="$(grep -oh -e @ref{.*} *.itely | sort -u)"
$ echo $LIST

 This is better but messes with newlines: 
$ LIST=$(grep -oh -e "@ref{.*}" *.itely | sort -u)
$ echo $LIST
@ref{Accidentals} @ref{Align} @ref{Aligning lyrics to a melody [...]

 The "for i in $LIST" also messes with newlines.
 This will rid you of the newline problem:
$ grep -oh -e "@ref{.*}" *.itely | sort -u | while read i; do echo $i; done
@ref{Accidentals}
@ref{Align}
...

 but now "read NODE" won't read from script stdin. Trying with
 /dev/stdin doesn't help since stdin is from the pipe, not the script
 stdin.

$ grep -oh -e "@ref{.*}" *.itely | sort -u |
> while read i; do echo $i; read NODE < /dev/stdin; echo $b; break; done
@ref{Accidentals}
@ref{Align}

 you culd solve that with arrays:
$ cat tt
#!/bin/sh

# for some reason mapfile doesnt work on pipes, hence the tmpfile
grep -oh -e "@ref{.*}" *.itely | sort -u > tmpfile
mapfile -t org < tmpfile

len=${#org[@]}
for (( ix=0; ix < $len; ix++ ))
do
 read NODE
 printf "%4d: %s %s\n" $ix "${org[ix]}" "$NODE"
done
$ ./tt | head -5
a d
   0: @ref{Accidentals} a d
cd g
   1: @ref{Align} cd g
gv
   2: @ref{Aligning lyrics to a melody} gv
xcvb rge
   3: @ref{Aligning objects} xcvb rge
rtdfg gr
   4: @ref{Ambitus} rtdfg gr
2
$

you could also do the for loop like:

for i in "${org[@]}"
do
 read NODE
 echo $i $NODE
done

Regards,
/Karl Hammar

-----------------------------------------------------------------------
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to