Beim Ausführen eines Skripts unter Ubuntu für Windows wird der Fehler „mv: cannot stat“ angezeigt.

Beim Ausführen eines Skripts unter Ubuntu für Windows wird der Fehler „mv: cannot stat“ angezeigt.

Ich habe ein Node-Projekt, das child_process verwendet, um ein Skript zu starten. Das Skript durchläuft Dateien, konvertiert sie in Bilder, speichert den Pfad zu jeder Datei in einem Array und gibt das Array an den Node zurück. Dann konvertiere ich in eine Zeichenfolge, um sie zu lesen, und erstelle ein console.log, um die Ergebnisse anzuzeigen. Ich erhalte jedoch eine Fehlermeldung:

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`

Ich sehe diesen Fehler nicht, wenn ich ihn auf einem Linux-Server ausführe. Nur wenn ich ihn in Ubuntu für Windows ausführe. Ich habe im Fehler bemerkt, dass der Verzeichnispfad kopiert wird: calBarcodereader/pdf

hier ist mein Skript:

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

und mein Knotencode:

const cp = require('child_process')

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

Antwort1

Als das Skript auf dem Linux-Server ausgeführt wurde, scheint der Pfadname viel kürzer gewesen zu sein.

Als schnelle Lösung ändern Sie diese Zeile:

file="${file:9}"

dazu:

file="${file:30}"

fileIm Wesentlichen haben Sie die Variable von: geändert .

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

Zu:

calBarcodereader/pdf/[email protected]

Als die Absicht bestand, filesich zu ändern:

[email protected]

Es gibt bessere Möglichkeiten, dies zu tun, und ich werde versuchen, die Antwort etwas später zu überarbeiten (und Ihre Frage neu zu formatieren).

verwandte Informationen