簡體   English   中英

'sed' 命令不適用於 java 腳本

[英]'sed' Command doesn't work with java script

我想使用 Javascript 的執行選項形式執行 Shell 命令:

"sed -i 4r<(sed '1,5!d' /etc/wpa_supplicant/wpa_template.template) /etc/wpa_supplicant/wpa_supplicant.conf"

然后我在 shell 控制台中嘗試這個命令,它可以完美地工作。 但是在使用 .js 程序啟動它之后,什么也沒有發生。 我只想復制模板中的前 5 行並將它們添加到配置文件中。

您可以使用child_process中的exec

const exec = require('child_process').exec
exec("sed -i 4r<(sed '1,5!d' /etc/wpa_supplicant/wpa_template.template) /etc/wpa_supplicant/wpa_supplicant.conf", (err, stdout, stderr) => {
    if (err) {
       return console.error(err)
    }
    console.log(`stdout: ${stdout}`)
    console.log(`stderr: ${stderr}`)
})

您可以使用以下代碼執行任何 shell 命令,並在每次運行時將 o/p 替換為新文件(創建新文件)。 而且,您應該使用 line-reader 模塊從文件中獲取行。

npm install --save line-reader
const fs = require('fs');
const lineReader = require('line-reader');
const { exec } = require('child_process');
const cmd = "sed -i 4r<(sed '1,5!d' /etc/wpa_supplicant/wpa_template.template) /etc/wpa_supplicant/wpa_supplicant.conf"

exec(cmd, (err, stdout, stderr) => {
  if (err) {
    //some err occurred
    console.error(err)
  } else {
   // the *entire* stdout and stderr (buffered)
   fs.writeFile('file path', stdout, (err) => {
    // throws an error, you could also catch it here
    if (err) throw err;
    // success case, the file was saved
    console.log('file saved');
    readFile1();
  });
  }
});

const readFile1 = () => lineReader.eachLine('file path', function(line) {
  //make logic to take number of lines you want to take.
  console.log(line);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM