首页 > 解决方案 > shelljs“未找到”错误

问题描述

我有以下 .sh 文件

// ping.sh
01: port="$1"
02: echo "pinging http://localhost:$port/ping"
03: 
04: retry=0
05: while
06:     sleep 1
07:     api_response=$(curl --write-out %{http_code} --silent --output /dev/null "http://localhost:$port/ping")
08:     echo "resp $api_response"
09:     (( "$api_response" != "200" && ++retry < 100 ))
10: do :; done

当我直接用 运行它时./ping.sh 8080,它工作正常。但是,当我使用 shelljs 运行它时,它会失败并出现以下错误。

// ping.js
require('shelljs').exec("./ping.sh 8080", {async:true});

$ node ping.js 
pinging http://localhost:8080/ping
resp 000 ./ping.sh: 9: ./ping.sh: 000: not found

标签: node.jsshellshelljs

解决方案


它确实有效,只需添加#!/bin/bashping.sh


工作概念验证:

ping.sh

#!/bin/bash
port="$1"
echo "pinging http://localhost:$port/ping"

retry=0
while
 sleep 1
 api_response=$(curl --write-out %{http_code} --silent --output /dev/null "http://localhost:$port/ping")
 echo "resp $api_response"
 (( "$api_response" != "200" && ++retry < 100 ))
do :; done

ping.js

require('shelljs').exec("./ping.sh 8080", {async:true});

终端输出:

node ping.js
pinging http://localhost:8080/ping
resp 000
resp 000

推荐阅读