'execがファイルのcatダンプをキャプチャする子プロセスであるNodeJSスクリプトがあります。
var exec = require('child_process').exec;
var result = '';
var child = exec('./scripts/first.sh',function(err, stdout, stderr) {
result = stdout.split("=");
});
ファイルがない場合は、別のファイルのダンプを取ります。
var result = '';
var child = exec('./scripts/first.sh',function(err, stdout, stderr) {
result = stdout.split("=");
if(stdout.indexOf('No such file or directory') != -1){
var child = exec('./scripts/second.sh', function(err, stdout, stderr) {
result = stdout.split("=");
});
});
最後に、結果変数の値をログに記録します。
console.log(result);
ファイルには、以下のようなデータが含まれます。
line_1 = 7888
line_2 = 8998
line_3 = 9090
line_4 = 9097
line_1とline_3の値を解析して抽出する必要がありますか?
結果変数には値が表示されません。私のアイデアは、文字列変数でstdoutデータを取得し、検索メカニズムを使用することでした。
JS / NodeJSの経験が少ないので、アプローチはわかりませんが。
==編集==
私が書いた関数のレプリカを見つけてください。
var exec = require('child_process').exec;
function getdetail() {
var result = '';
var child = exec('./scripts/first.sh', function(err, stdout, stderr) {
if(stdout.indexOf('No such file or directory') != -1){
var child = exec('./scripts/second.sh',function(err, stdout, stderr) {
result = stdout.toString().split("=");
console.log(result);
});
}
else
{
result = stdout.toString().split("=");
console.log(result);
}
});
}
stdoutストリームオブジェクトのtostring()でうまくいきましたが、以下のようにコンソールログを取得します。
[ 'spawn ssh -o UserKnownHostsFile',
'/dev/null -o StrictHostKeyChecking',
'no user@www.mybox.com cat ver.txt\r\nWarning: Permanently added \'www.mybox.com,XX.XX.XX.XX\' (RSA) to the list of known hosts.\r\r\nuser@www.mybox.com\'s password: \r\line_1',
'9400\r\nline_2',
'3508\r\nline_3',
'77f3\r\nline_4',
'/tmp\r\nline_5',
'/tmp/ramdisk/\r\nline_5',
'77f3\r\n' ]
line_1とline_3の値を抽出するにはどうすればよいですか?