广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >node中使用shell脚本的方法步骤
  • 243
分享到

node中使用shell脚本的方法步骤

2024-04-02 19:04:59 243人浏览 泡泡鱼
摘要

背景 在开发中我们在特定的场合下可能需要一些脚本来批量处理我们的业务逻辑,在nodejs如何调用shell脚本呢? 新建 项目下新建脚本文件 touch newFile.sh

背景

开发中我们在特定的场合下可能需要一些脚本来批量处理我们的业务逻辑,在nodejs如何调用shell脚本呢?

新建

项目下新建脚本文件


touch newFile.sh

修改文件权限


chmod 777 newFile.sh 修改文件为可读可写可执行

nodejs调用

文件读取


//使用nodejs的子进程里面的文件读取方法

const { execFile } = require(‘child_process');

示例


DoCSService.publishAllDocs = (req, res) => {
 req.session.touch();
 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 username = req.session.user_name;
 var str = docName+'/'+ pathName + '|'+ username;
 var reg = new RegExp(`^(${str})`);
 saveDocsList.map((item, index)=>{
   fileArr = item.pathName.split("/");
   fileName = fileArr[fileArr.length-1];
   if(docType == "docsify"){
     dirnameBack = fileName != "" ? `../../gitlib/docBackup/${docName}/docs/${item.pathName}`:`../../gitlib/docBackup/${docName}/docs/README.md`
   }else{
     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 + " ";
 })
 docPath += ""
 //cwd设置当前路径 我这边设置的就是nodejs代码js当前的位置
 execFile(filepath, [docName, docPath, docType], { cwd: '.' }, function(err, stdout, stderr){
   logger.info(stdout);
   if(err){
     loggerFileError({user:username,docName:docName,pathName:'all',operate:"gitbook文件一键发布",err});
     res.JSON({
       respCode: -1,
       errMsg: "一键发布失败"
     })
   }else{
     res.json({
       respCode: 0,
       msg: "一键发布成功"
     })
     gitPush({ docName, fileName, docbackPath: docbackList, username, pathName, docType })
     unblockFile({ docName, username, pathName, reg });
   }
 }) 
}

回调

执行成功会返回脚本执行的命令

execFile

  • 第一个参数:要调用的外部程序,这里是要读取的文件
  • 第二个参数:传给外部程序的参数(必须要放在数组里面)
  • 第三个参数:回调函数,在回调中可以回去外部程序的执行结果

shell

publishAllDocs.sh 主意:此处说明的都是非window下的shell脚本 window的.bat脚本不在此处讲解


#$1文档最外层目录 $2当前修改的文件名 $3当前修改文件的目录
cd $(pwd)/gitlib/docs/$1
echo "come in"
for item in $2; do
  echo "${item}"
  cp -f ${item} ${item/docBackup/docs}
done
# echo "初始化进入"
echo "$(pwd)/gitlib/docs/$1"
if [ "$3" == "docsify" ];then
  #拷贝指定目录下的文件 如: $1/$3/$2 docs/cst/7e4ce1de04621e0b/
  #如 cp -rf ../../docBackup/wireless/docs/cst/7e4ce1de04621e0b/10708d589eedfffd.md ./docs/cst/7e4ce1de04621e0b/
  cp -rf ./docs ../../../public/docs/$1
else
  # 处理gitbook类型文档
  gitbook build
  echo "复制文档"
  cp -rf ./_book/* ../../../public/docs/$1
fi

参数接收

  • 根据业务调用时传参的数据来获取参数
  • 直接使用"$"来获取
  • 获取顺序就是数据传入顺序
  • 切记不是数组角标的取值 数组第一个参数就是$1

for循环的使用

在shell使用for…in的形式

需要循环的循环体数据示例

"/Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/docs/d09985fc67088b35/d09985fc67088b35.md /Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/docs/d09985fc67088b35/d09985fc67088b35/6f7a2c61c9bac0a3.md /Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/README.md /Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/docs/d09985fc67088b35/d09985fc67088b35/6f7a2c61c9bac0a3.md "

shell脚本里面的循环体的数据比较特殊不是我们常规的数组或者json

直接就是以空格隔开的一个字符串 如: “a b c d e”


## $2就是脚本里面接收的业务的传参 按格式拼接好的数据 如上面数据示例
## 循环使用 for...in 记得;后面一定要加上do去执行循环体 最后使用done结束循环
## item循环体的每个子项 如:/Users/Desktop/work/docManager/docServer/gitlib/docBackup/mygitbook/docs/d09985fc67088b35/d09985fc67088b35.md
for item in $2; do
  echo "${item}"
  cp -f ${item} ${item/docBackup/docs}
done
## ${item/docBackup/docs} 字符串替换
## 此处是吧item路径里面的docBackup替换成docs 详细解释请看下面的shell字符串替换

shell指定字符串替换

在JS里面我们可以使用replace去做字符串的替换,那么shell里面改如何实现?

示例:

string “abc12342341”

  • echo ${string/23/bb} //abc1bb42341 替换一次
  • echo ${string//23/bb} //abc1bb4bb41 双斜杠替换所有匹配
  • echo ${string/#abc/bb} //bb12342341 #以什么开头来匹配,根PHP中的^有点像
  • echo ${string/%41/bb} //abc123423bb %以什么结尾来匹配,根php中的$有点像

if条件判断的使用

语法


if[];then
 ...
else
 ...
fi

示例


## 条件判断是使用[]而不是()
## []后面要加;
if [ "$3" == "docsify" ];then
  #拷贝指定目录下的文件 如: $1/$3/$2 docs/cst/7e4ce1de04621e0b/
  #如 cp -rf ../../docBackup/wireless/docs/cst/7e4ce1de04621e0b/10708d589eedfffd.md ./docs/cst/7e4ce1de04621e0b/
  cp -rf ./docs ../../../public/docs/$1
else
  # 处理gitbook类型文档
  gitbook build
  echo "复制文档"
  cp -rf ./_book/* ../../../public/docs/$1
fi

注意

  • 条件判断里面字符串要使用""双引号
  • 如果条件判断里面有变量(字符串) 变量也要添加""双引号
  • 条件判断[]后面要加上;并且一点要使用then才能继续执行
  • 条件判断最后要使用fi结尾

到此这篇关于node中使用shell脚本的方法步骤的文章就介绍到这了,更多相关node使用shell脚本内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: node中使用shell脚本的方法步骤

本文链接: https://www.lsjlt.com/news/122082.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node中使用shell脚本的方法步骤
    背景 在开发中我们在特定的场合下可能需要一些脚本来批量处理我们的业务逻辑,在nodejs如何调用shell脚本呢? 新建 项目下新建脚本文件 touch newFile.sh...
    99+
    2022-11-11
  • 使用shell脚本安装lnmp的方法步骤
    1、简介 使用shell脚本安装lnmp,纯粹是偷懒,平时安装一些东西都写成脚本了,方便以后在其他机器安装的时候不用再去查找文档。 php版本5.6.6 mysql版本5.6.26 NGINX版本1.15....
    99+
    2022-06-04
    shell安装lnmp
  • Tomcat安装shell脚本的方法步骤
    目录一、JAVA环境安装二、JAVA环境安装检测三、tomcat安装与启动四、tomcat启动检测五、脚本程序六、执行效果检验今天继续给大家介绍Linux运维相关知识,本文主要内容是...
    99+
    2022-11-13
  • shell脚本配置hostname的方法步骤
    目录1.Shell字符串拼接(连接、合并)2.shell产生随机数的方法2.1 通过内部系统变量($RANDOM)2.2 读取linux的uuid码2.3 使3.修改hostname1.Shell字符串拼接(连接、合并)...
    99+
    2023-03-23
    shell脚本配置hostname shell配置hostname
  • node中如何使用shell脚本
    这篇文章将为大家详细讲解有关node中如何使用shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。新建项目下新建脚本文件touch newFile.sh修改文件权限chmod ...
    99+
    2023-06-14
  • PHP中shell脚本的使用方法
    今天就跟大家聊聊有关PHP中shell脚本的使用方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们都知道,在计算机科学中,SHELL类似于DOS下的command.com。它接收...
    99+
    2023-06-17
  • C# 执行Javascript脚本的方法步骤
    前一阵子使用C#编写SCXML状态机,需要解析EMCScript表达式,使用了Jint库(https://github.com/sebastienros/jint/),当时感觉与C#...
    99+
    2022-11-12
  • Bash Shell脚本中数组的使用方法
    这篇文章主要介绍“Bash Shell脚本中数组的使用方法”,在日常操作中,相信很多人在Bash Shell脚本中数组的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Bash Shell脚本中数组的使...
    99+
    2023-06-17
  • java中调用shell脚本的方法
    java中调用shell脚本的方法:1、在java项目中能够通过ProcessBuilder进行调度shell脚本,参数设置相对简单;2、还能够通过系统Runtime执行shell脚本,但在参数设置上需要添加空格将两个参数分开。具体内容如下...
    99+
    2022-10-14
  • 使用shell脚本快速登录容器的实现步骤
    当我已经安装好容器后,例如mysql,Redis等,想要快捷登录时,可以用shell脚本一键登录。 首先要写好要用的脚本,例如登录mysql容器后,我们要输入mysql-u root -p123456。我们把它直接写入...
    99+
    2022-08-22
  • Shell脚本调用另一个脚本的三种方法
    假如有脚本 first.sh: #!/bin/bash #------------------ #@file:first.sh #------------------ echo 'your are in first ...
    99+
    2022-06-04
    shell 脚本 shell 脚本调用 shell 脚本调用其他脚本
  • Shell脚本中$符号的嵌套使用方法小结
    目录1 示例2 说明本文主要介绍在编写 Shell 脚本时,通过嵌套使用 $ 符号,间接获取变量或表达式的值的具体方法。 先说结论,在 Shell 脚本中,可以通过使用 eval 命令来实现 $ 符号的嵌套使用...
    99+
    2023-05-06
    Shell $符号嵌套 Shell $符号
  • shell脚本编程if语句的使用方法
    本篇内容主要讲解“shell脚本编程if语句的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本编程if语句的使用方法”吧!我不是研究linux下的东西的,所以这里只对shel...
    99+
    2023-06-09
  • 使用shell读取ini文件方法步骤
    目录动机.ini 类文件格式在 shell 脚本中处理 .ini 文件时要执行的操作假定处理系统查看部分列表仅提取特定部分如何限定 shell 变量名Shell scripting动机 我决定编写一个脚本来进行干净的 m...
    99+
    2022-06-09
    shell读取ini文件 shell读取ini
  • Shell脚本运行环境及基本使用方法
    目录引言一、Shell 脚本二、Shell 环境三、第一个shell脚本运行 Shell 脚本有两种方法:Ubuntu(linux)下 source、sh、bash、./ 执行脚本的区别是什么?引言 Shell 是一个用...
    99+
    2023-05-12
    Shell脚本运行环境 Shell脚本运行
  • Node中使用http-proxy-middleware实现代理跨域的方法步骤
    目录1.安装代理模块 2.配置代理 1.安装代理模块 cnpm i http-proxy-middleware -S 2.配置代理 const express = r...
    99+
    2022-11-12
  • shell中循环调用hive sql 脚本的方法
    脚本tt.sh的内容如下: #!/bin/bash params=$1 for param in $params do eceqQgxvIqOHho $param done 运行方式为:sh tt.sh "...
    99+
    2022-06-04
    shell 循环调用 hive sql
  • Linux利用Shell脚本部署jar包项目的完整步骤
    一.安装JDK 查看电脑的操作位数: uname -ar 2017 x86_64 x86_64 x86_64 GNU/linux 如果这里显示是64位的就下载相应64位的包 jdk的下载地址,推荐下载tar....
    99+
    2022-06-04
    shell调用jar包 linux jar命令 linux 运行jar
  • Shell脚本中引用、调用另一个脚本文件的2种方法
    在Java,Python中,可以用import的方式来进行脚本或模块之间调用,例如: >>> import math >>> math.sqrt(4) 2....
    99+
    2022-06-04
    脚本 种方法 文件
  • 在Linux系统中Shell脚本使用if语句的方法
    这篇文章主要讲解了“在Linux系统中Shell脚本使用if语句的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Linux系统中Shell脚本使用if语句的方法”吧!Bourne Sh...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作