Ubuntu para Windows al ejecutar el script muestra mv: no se puede registrar el error

Ubuntu para Windows al ejecutar el script muestra mv: no se puede registrar el error

Tengo un proyecto de nodo que usa child_process para iniciar un script. El script recorre los archivos, los convierte en imágenes, almacena la ruta a cada uno en una matriz y devuelve la matriz al nodo. luego lo convierto a cadena para poder leerlo y hago un console.log para ver los resultados. Sin embargo, recibo un error:

I/O Error: Couldn't open file `'/mnt/c/localBarcodereader/pdf/calBarcodereader/pdf/[email protected]': No such file or directory.
mv: cannot stat '/mnt/c/localBarcodereader/pdf/calBarcodereader/pdf/[email protected]': No such file or directory`

No veo este error cuando lo ejecuto en un servidor Linux. Sólo cuando ejecuto esto en Ubuntu para Windows. Noté en el error que se está copiando la ruta del directorio: calBarcodereader/pdf

aquí está mi guión:

#! /bin/bash
ndate=
fecha +%F_%T OIFS=$IFS; IFS=$'\n'; array=($(find /mnt/c/localBarcodereader/pdf -type f - size +0b)); IFS=$OIFS for item in "${array[@]}" do

file=$item
file="${file:9}"
fname="${file::-4}"
PATHTOIMG= "/mnt/c/localBarcodereader/pdfimage/${fname}_${ndate}"
if [ ${file: -4} == ".pdf" ]; then
# pdftoppm /mnt/c/localBarcodereader/pdf/[email protected] /mnt/c/localBarcodereader/pdfimage/test -png -f 1 -singlefile -rx 1500 -ry 1500
    pdftoppm /mnt/c/localBarcodereader/pdf/$file $PATHTOIMG -png -f 1 -singlefile -rx 1500 -ry 1500
    mv /mnt/c/localBarcodereader/pdf/$file /mnt/c/localBarcodereader/pdfarchive
    echo $PATHTOIMG
else
        mv /mnt/c/localBarcodereader/pdf/$file /mnt/c/localBarcodereader/pdfarchive
fi done

y mi código de nodo:

const cp = require('child_process')

try {
const data = cp.execSync('/mnt/c/localBarcodereader/barcodeScript.sh');
if (data.toString() !== "") {
    console.log(data.toString())

Respuesta1

Cuando el script se ejecutaba en el servidor Linux, el nombre de la ruta parece haber sido mucho más corto.

Como solución rápida, cambie esta línea:

file="${file:9}"

a esto:

file="${file:30}"

Básicamente estabas cambiando la variable filede:

/mnt/c/localBarcodereader/pdf/[email protected]

a:

calBarcodereader/pdf/[email protected]

Cuando la intención era cambiar filepara ser:

[email protected]

Hay mejores formas de hacer esto e intentaré revisar la respuesta (y reformatear tu pregunta) un poco más tarde.

información relacionada