HintergrundWährend der Entwicklung benötigen wir in bestimmten Situationen möglicherweise einige Skripte, um unsere Geschäftslogik stapelweise zu verarbeiten. Wie ruft man Shell-Skripte in Node.js auf? NeuErstellen Sie eine neue Skriptdatei unter dem Projekt berühren Sie neueDatei.sh Dateiberechtigungen ändern chmod 777 newFile.sh ändert die Datei so, dass sie lesbar, beschreibbar und ausführbar ist Nodejs-Aufruf Lesen von Dateien //Verwende die Methode zum Lesen von Dateien im untergeordneten Prozess von nodejs const { execFile } = require('child_process'); Beispiel DocsService.publishAllDocs = (erfordert, res) => { erfordert.session.touch(); const { docName, pathName, saveDocsList, docType } = req.body; var docText = erforderlich.body.docText; var newGit = req.body.newGit; //Dateipfad abrufen var filepath = path.join(__dirname, '../../bin/rnsource/publishAllDocs.sh'); var fileArr, Dateiname, spath, VerzeichnisnameZurück, docbackList = [], docbackPath, docPath = ""; var Benutzername = req.session.user_name; var str = docName+'/'+ Pfadname + '|'+ Benutzername; var reg = neuer RegExp(`^(${str})`); saveDocsList.map((item, index)=>{ fileArr = item.PfadName.split("/"); Dateiname = Dateiarr[Dateiarr.Länge-1]; wenn(docType == "docsify"){ dirnameBack = Dateiname != "" ? `../../gitlib/docBackup/${docName}/docs/${item.pathName}`:`../../gitlib/docBackup/${docName}/docs/README.md` }anders{ spath = item.Pfadname.split(Dateiname)[0]; dirnameBack = spath != "" ?'../../gitlib/docBackup/'+ docName+'/'+ spath +'/'+fileName:'../../gitlib/docBackup/'+ docName+'/' + fileName; } docbackPath = Pfad.join(__dirname, dirnameBack); docbackList.push(docbackPath); docPfad += docbackPfad + " "; }) docPath += "" //cwd legt den aktuellen Pfad fest. Was ich hier festlege, ist der aktuelle Speicherort des NodeJS-Codes js execFile(filepath, [docName, docPath, docType], { cwd: '.' }, function(err, stdout, stderr){ logger.info(stdout); wenn(fehler){ loggerFileError({user:Benutzername,docName:docName,pathName:'alle',operate:"Gitbook-Datei mit einem Klick freigeben",err}); res.json({ Antwortcode: -1, errMsg: „Veröffentlichung mit einem Klick fehlgeschlagen“ }) }anders{ res.json({ Antwortcode: 0, msg: „Ein-Klick-Veröffentlichung erfolgreich“ }) gitPush({ docName, fileName, docbackPath: docbackList, username, pathName, docType }) unblockFile({ docName, username, pathName, reg }); } }) } RückrufeBei erfolgreicher Ausführung wird der vom Skript ausgeführte Befehl zurückgegeben. execDatei
HülsepublishAllDocs.sh Hinweis: Alle Anweisungen hier sind Shell-Skripte für Nicht-Windows-Betriebssysteme. Die .bat-Skripte für Windows werden hier nicht erklärt. #$1 Das äußerste Verzeichnis des Dokuments$2 Der Name der aktuell geänderten Datei$3 Das Verzeichnis der aktuell geänderten Dateicd $(pwd)/gitlib/docs/$1 Echo "Komm rein" für Artikel in $2; tun echo "${item}" cp -f ${item} ${item/docBackup/docs} Erledigt # echo "Initialisierungseintrag" echo "$(pwd)/gitlib/docs/$1" wenn [ "$3" == "docsify" ]; dann #Kopieren Sie die Dateien in das angegebene Verzeichnis, zum Beispiel: $1/$3/$2 docs/cst/7e4ce1de04621e0b/ #Wie z. B. cp -rf ../../docBackup/wireless/docs/cst/7e4ce1de04621e0b/10708d589eedfffd.md ./docs/cst/7e4ce1de04621e0b/ cp -rf ./docs ../../../public/docs/$1 anders # Gitbook-Typdokumente verarbeiten gitbook build echo "Dokument kopieren" cp -rf ./_book/* ../../../public/docs/$1 fi Parameterempfang
Verwendung der for-SchleifeVerwenden Sie das for...in-Formular in der Shell Beispiel für Schleifenkörperdaten, die wiederholt werden müssen
Die Daten im Schleifenkörper des Shell-Skripts sind speziell und nicht unser reguläres Array oder JSON Es handelt sich um eine durch Leerzeichen getrennte Zeichenfolge, beispielsweise: „abcde“ ## $2 sind die im Skript empfangenen und im Format wie im obigen Datenbeispiel gezeigt zusammengefügten Daten.## Verwenden Sie for...in in einer Schleife. Denken Sie daran, danach do hinzuzufügen, um den Schleifenkörper auszuführen und die Schleife mit done zu beenden.## Jedes Unterelement des Elementschleifenkörpers lautet wie folgt: /Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/docs/d09985fc67088b35/d09985fc67088b35.md für Artikel in $2; tun echo "${item}" cp -f ${item} ${item/docBackup/docs} Erledigt ## ${item/docBackup/docs} Zeichenfolgenersatz## Hier wird docBackup im Elementpfad durch docs ersetzt. Eine detaillierte Erklärung finden Sie unten im Shell-Zeichenfolgenersatz Von der Shell angegebene ZeichenfolgenersetzungIn JS können wir „Replace“ verwenden, um Zeichenfolgen zu ersetzen. Wie implementieren wir es also in der Shell? Beispiel: Zeichenfolge "abc12342341"
Verwendung des bedingten Urteils „if“ Grammatik wenn[];dann ... anders ... fi Beispiel ## Bedingtes Urteil verwendet [] statt () ## [] sollte danach hinzugefügt werden; wenn [ "$3" == "docsify" ]; dann #Kopieren Sie die Dateien in das angegebene Verzeichnis, zum Beispiel: $1/$3/$2 docs/cst/7e4ce1de04621e0b/ #Wie z. B. cp -rf ../../docBackup/wireless/docs/cst/7e4ce1de04621e0b/10708d589eedfffd.md ./docs/cst/7e4ce1de04621e0b/ cp -rf ./docs ../../../public/docs/$1 anders # Gitbook-Typdokumente verarbeiten gitbook build echo "Dokument kopieren" cp -rf ./_book/* ../../../public/docs/$1 fi Beachten
Dies ist das Ende dieses Artikels über die Methoden und Schritte zur Verwendung von Shell-Skripten in Node. Weitere relevante Inhalte zur Verwendung von Shell-Skripten in Node finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: So aktivieren Sie die MySQL-Remoteverbindung auf einem Linux-Server
>>: MySQL-Installationstutorial unter Centos7
Installieren Sie zunächst den OpenSSH-Server im D...
1. Erstellen einfügen in [Tabellenname] (Feld1, F...
In diesem Artikel wird der spezifische Code des d...
Der Unterschied zwischen Inline-Elementen und Blo...
Vorwort Manchmal muss die Höhe eines Box-Containe...
Als Front-End-Affe werden wir, sei es während ein...
Einen Fehler melden Der Apache\Nginx-Dienst wurde...
Validierung des WeChat-Applets-Formulars. Zu Ihre...
Inhaltsverzeichnis Kartenstaat Kartengetter Karte...
Kürzlich stieß ich auf eine Webseite, die zwar Bil...
Inhaltsverzeichnis 1. Klasse 1.1 Konstruktor() 1....
1. Adresse herunterladen https://dev.mysql.com/do...
Inhaltsverzeichnis Vorherige Wörter Anwendungssze...
NERDTree ist ein Dateisystembrowser für Vim. Mit ...
1. Verwenden Sie auf einem vernetzten Computer di...