Ubuntu для Windows при запуске скрипта выдает ошибку mv: cannot stat

Ubuntu для Windows при запуске скрипта выдает ошибку mv: cannot stat

У меня есть проект node, который использует child_process для запуска скрипта. Скрипт циклически проходит по файлам, преобразует их в изображение, сохраняет путь к каждому в массиве и возвращает массив в node. Затем я преобразую в строку, чтобы прочитать ее, и делаю console.log, чтобы увидеть результаты. Однако я получаю ошибку:

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`

Я не вижу этой ошибки при запуске на сервере Linux. Только когда я запускаю это в Ubuntu для Windows. Я заметил в ошибке, что копируется путь к каталогу: calBarcodereader/pdf

вот мой сценарий:

#! /bin/bash
ndate=
дата +%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

и мой код узла:

const cp = require('child_process')

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

решение1

Когда скрипт работал на сервере Linux, имя пути, по-видимому, было намного короче.

В качестве быстрого решения измените эту строку:

file="${file:9}"

к этому:

file="${file:30}"

По сути вы меняли переменную fileс:

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

к:

calBarcodereader/pdf/[email protected]

Когда было намерение измениться, fileчтобы стать:

[email protected]

Есть лучшие способы сделать это, и я постараюсь пересмотреть ответ (и переформатировать ваш вопрос) чуть позже.

Связанный контент