是否可以从.sh脚本执行node.js应用程序,返回一些变量并继续.sh脚本? 类似的东西:
#!/bin/sh
SOME_VARIABLE = node app.js
echo ${SOME_VARIABLE}
答案 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[@]}";