I am new to javascript. I have a js file something like below(test.js):
async function getData() {
let a =100;
// Some other function calls which modifies a
// Some more console logs here.
return a;
}
(async () => {
console.log(await getData()); // When trying to return await getData() giving some error.
})();
I am executing the above script output = $(node test.js) in shell script and I need the value of a in the shell script but here I am getting all the console.log statements. Is it possible to get the value?
If you know that output will always have one line (by output I mean returned value from getData()), you can use $(node test.js | tail -n 1) to grab only one last line from node test.js. Otherwise you can do this little hacky workaround by replacing console.log function:
async function getData() {
let a = 100;
console.log("Some cosole log");
console.log("Some other log");
return a;
}
(async () => {
console_log = console.log; // Save original function for later
console.log = ()=>{}; // Replace original with "dummy" function
console_log(await getData()); // Use saved original to log only what we want
})();
This will work unless some part of code use process.stdout.write to log/print data directly. To avoid this, we can again replace process.stdout.write with some dummy function but since this is likely to break some other things, I would avoid it.