我有sh文件,如:In React - 如何从.sh(Shell脚本)文件获取值?
echo "Hello"
,输出:
Hello
下面是该查询:
我想实现的是,至从.sh文件获取输出,并在 我的反应应用程序中使用它。
...我已经寻找NPM包,但无法找到任何有用的
我有sh文件,如:In React - 如何从.sh(Shell脚本)文件获取值?
echo "Hello"
,输出:
Hello
下面是该查询:
我想实现的是,至从.sh文件获取输出,并在 我的反应应用程序中使用它。
...我已经寻找NPM包,但无法找到任何有用的
我想你应该把输出到任何文件(echo $var > $destdir
或使用sed
),通过使用和的NodeJS例如通过值读取该文件ajax请求作出反应。
是的,但为此我需要运行该文件,对不对? –
假设你不在Windows机器上,可以编写简单的Node Express服务器,它可以接收GET请求,然后使用Node内置的child_process.exec()
执行shell脚本,然后发送包含stdout的响应,在这种情况下,将是你的shell脚本的输出 - “你好”
服务器的代码。 “静态”文件夹中包含的index.html和index.js,去年的代码是下面这个样子:
客户端(你也可以环绕该代码反应,因为你唯一需要的是一个由XHRconst express = require('express')
const { exec } = require('child_process')
const { join } = require('path')
const port = process.env.PORT || 24587
const app = express()
app.use(express.static(join(__dirname, 'static')))
app.get('/hello', (req, res) => {
exec(join(__dirname, 'hello.sh'), (err, stdout, stderr) => {
if (err) {
return res.status(400).json({ output: null, error: err.message })
}
res.status(200).json({ output: stdout, error: null })
})
})
app.listen(port,() => {
console.log('server listening on port', port)
})
示例代码这里的fetch
帮助):
const btn = document.querySelector('#btn') // <button id="btn">get</button>
const result = document.querySelector('#result') // <div id="result"></div>
btn.addEventListener('click',() => {
if (self.fetch) {
fetch('/hello')
.then(res => res.json())
.then(data => {
result.innerText = data.output
})
.catch(data => {
result.innerText = data.error
})
}
})
是的,我认为这会起作用,但我不想打电话给任何XHR,有什么想法? –
@VivekDoshi你想直接从React调用shell脚本? – vanelizarov
@VivekDoshi我想说,你不能在浏览器中评估除JavaScript之外的任何东西。当然,你可以在客户端加载shell脚本文件,这意味着你需要向本地文件发出AJAX请求,然后写入f.e.正则表达式从该文件中提取所有以'echo'开头的行,然后解析这些行以获得种类的占位符 – vanelizarov
为节点,您可以使用child_process模块来运行你的shell脚本,并保存其输出某些变量 –
@FarhanYaseen,听起来很有趣 –
https://nodejs.org/api /child_process.html这里是完整的细节 –