背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります。Node.js でシェル スクリプトを呼び出すにはどうすればよいでしょうか? 新しいプロジェクトの下に新しいスクリプトファイルを作成する newFile.sh をタッチします ファイルの権限を変更する chmod 777 newFile.sh はファイルを読み取り、書き込み、実行可能に変更します。 Nodejs呼び出しファイルの読み取り //nodejs の子プロセスでファイル読み取りメソッドを使用します。const { execFile } = require('child_process'); 例 DocsService.publishAllDocs = (req, res) => { 要求セッションタッチ(); const { docName、pathName、saveDocsList、docType } = req.body; var docText = req.body.docText; var newGit = req.body.newGit; //ファイル パスを取得します。var filepath = path.join(__dirname, '../../bin/rnsource/publishAllDocs.sh'); var fileArr、fileName、spath、dirnameBack、docbackList = []、docbackPath、docPath = ""; var ユーザー名 = req.session.user_name; var str = docName+'/'+ パス名 + '|'+ ユーザー名; var reg = new RegExp(`^(${str})`); saveDocsList.map((item, index)=>{ fileArr = item.pathName.split("/"); ファイル名 = fileArr[fileArr.length-1]; if(docType == "docsify"){ dirnameBack = fileName != "" ? `../../gitlib/docBackup/${docName}/docs/${item.pathName}`:`../../gitlib/docBackup/${docName}/docs/README.md` }それ以外{ spath = item.pathName.split(fileName)[0]; dirnameBack = spath != "" ?'../../gitlib/docBackup/'+ docName+'/'+ spath +'/'+fileName:'../../gitlib/docBackup/'+ docName+'/' + fileName; } docbackPath = path.join(__dirname, dirnameBack); docbackList.push(docbackPath); docPath += docbackPath + " "; }) ドキュメントパス += "" //cwd は現在のパスを設定します。ここで設定するのは、Node.js コードの現在の場所です。js execFile(filepath, [docName, docPath, docType], { cwd: '.' }, function(err, stdout, stderr){ logger.info(標準出力); もしエラーが起きたら loggerFileError({user:username,docName:docName,pathName:'all',operate:"gitbook ファイルのワンクリックリリース",err}); res.json({ 応答コード: -1, errMsg: 「ワンクリック公開に失敗しました」 }) }それ以外{ res.json({ 応答コード: 0, メッセージ: 「ワンクリック公開に成功しました」 }) gitPush({ docName, ファイル名, docbackPath: docbackList, ユーザー名, パス名, docType }) ファイルのブロックを解除します({ docName, ユーザー名, パス名, reg }); } }) } コールバック正常に実行されると、スクリプトによって実行されたコマンドが返されます。 実行ファイル
シェルpublishAllDocs.sh 注: ここで説明する手順はすべて、Windows 以外のシェル スクリプトです。Windows の .bat スクリプトについてはここでは説明しません。 #$1 ドキュメントの最外部ディレクトリ$2 現在変更されているファイルの名前$3 現在変更されているファイルのディレクトリcd $(pwd)/gitlib/docs/$1 「入って」とエコーする 2ドルのアイテムの場合、 echo "${item}" cp -f ${item} ${item/docBackup/docs} 終わり # echo "初期化エントリ" echo "$(pwd)/gitlib/docs/$1" [ "$3" == "docsify" ] の場合; #指定されたディレクトリ内のファイルをコピーします。例: $1/$3/$2 docs/cst/7e4ce1de04621e0b/ #例: cp -rf ../../docBackup/wireless/docs/cst/7e4ce1de04621e0b/10708d589eedfffd.md ./docs/cst/7e4ce1de04621e0b/ cp -rf ./docs ../../../public/docs/$1 それ以外 # gitbook タイプのドキュメントを処理する gitbook build echo "ドキュメントをコピー" cp -rf ./_book/* ../../../public/docs/$1 フィ パラメータ受信
forループの使用シェルで for...in 形式を使用する ループする必要があるループ本体データの例
シェルスクリプトのループ本体のデータは特別なものであり、通常の配列やjsonではありません。 これはスペースで区切られた文字列です。例: "abcde" ## $2 はスクリプトで受信され、上記のデータ例に示す形式で接合されたデータです。## ループでは for...in を使用します。その後に do を追加してループ本体を実行し、done でループを終了することを忘れないでください。## 項目ループ本体の各サブ項目は次のとおりです: /Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/docs/d09985fc67088b35/d09985fc67088b35.md 2ドルのアイテムの場合、 エコー "${item}" cp -f ${item} ${item/docBackup/docs} 終わり ## ${item/docBackup/docs} 文字列の置換## ここでは、アイテムパスの docBackup が docs に置き換えられます。詳細な説明については、以下のシェルの文字列の置換を参照してください。 シェル指定の文字列置換JS では、 replace を使用して文字列を置き換えることができますが、シェルではどのように実装すればよいでしょうか? 例: 文字列 "abc12342341"
if条件判断の使用 文法 if[];then ... それ以外 ... フィ 例 ## 条件判断では()の代わりに[]を使用します ## [] は後に追加する必要があります。 [ "$3" == "docsify" ] の場合; #指定されたディレクトリ内のファイルをコピーします。例: $1/$3/$2 docs/cst/7e4ce1de04621e0b/ #例: cp -rf ../../docBackup/wireless/docs/cst/7e4ce1de04621e0b/10708d589eedfffd.md ./docs/cst/7e4ce1de04621e0b/ cp -rf ./docs ../../../public/docs/$1 それ以外 # gitbook タイプのドキュメントを処理する gitbook build echo "ドキュメントをコピー" cp -rf ./_book/* ../../../public/docs/$1 フィ 知らせ
ノードでシェル スクリプトを使用する方法と手順に関するこの記事はこれで終わりです。ノードでシェル スクリプトを使用する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux サーバーで MySQL リモート接続を有効にする方法
>>: Centos7でのMySQLインストールチュートリアル
理由は簡単です。 HTML ドキュメントでは、複数の空白文字は 1 つの空白文字と同等です。つまり、...
1. CentOSイメージをダウンロードする1.1 ダウンロードウェブサイトhttp://mirro...
ツール型ウェブサイトについて、まず疑問に思うのは、無数のオンラインウェブサイトの中で、どのようなウェ...
Linux の優れた点は、マルチユーザー、マルチタスク システムにあります。 Linux では通常、...
marquee タグを使用してフォントのスクロールを設定したいです。コードは次のように記述しましたが...
Web 上でフォントを使用することは、基本的なスキルであると同時に芸術でもあります。英語のフォントに...
最近のブラウザでは、CSS 内で JavaScript を実行することはできなくなりました。以前は、...
この記事では、MySQL 8.0.12解凍版のインストールチュートリアルを参考までに紹介します。具体...
現在では多くの人がスマートフォンを使用していることを考慮すると、モバイル Web ページの書き方は、...
目次無イメージの創造と混乱Noneオブジェクトをクリーンアップする方法トリムミラーコンテナで使用され...
Navicat は、データベースに接続するときにエラー 10060 および 1045 を報告します...
序文インターセプターの機能の 1 つは、特定のメソッドの呼び出しをインターセプトできることです。イン...
ウェブサイトでは、コンテンツの(100-1)%がナビゲーションです1. ジェシー・ジェームズ・ギャレ...
目次アポロ コンフィギュレーション センターとは何ですか?アポロの特徴クライアントアーキテクチャアー...
この機能を実装するにあたり、本家ブロガーさんから拝借した方法では色の切り替えが実現できず、長い間考え...