将变量从node.js返回到sh脚本

时间:2015-02-18 11:11:04

标签: node.js bash sh

是否可以从.sh脚本执行node.js应用程序,返回一些变量并继续.sh脚本? 类似的东西:

#!/bin/sh
SOME_VARIABLE = node app.js
echo ${SOME_VARIABLE}

1 个答案:

答案 0 :(得分:9)

首先,请确保您使用bash,而不是sh,因为两者之间的功能存在显着差异。

一个简单的解决方案是命令替换,但要注意命令输出中的尾随换行符将被删除。此外,当回显时,为了保护变量的内容(例如空格和glob字符)不被shell进行元处理,你必须对它进行双引号:

#!/bin/bash
output=$(node app.js);
echo "$output";

另一种解决方案是在bash的更新版本中进行流程替换。在这种情况下,您甚至可以将输出收集为行数组:

#!/bin/bash
exec 3< <(node app.js);
lines=();
while read -r; do lines+=("$REPLY"); done <&3;
exec 3<&-;
echo "${lines[@]}";