
У меня есть проект 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
дата +%F_%T
ndate=
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]
Есть лучшие способы сделать это, и я постараюсь пересмотреть ответ (и переформатировать ваш вопрос) чуть позже.