是否可以从.sh脚本执行node.js应用程序,返回一些变量并继续.sh脚本?就像是:
#!/bin/sh
SOME_VARIABLE = node app.js
echo ${SOME_VARIABLE}
Run Code Online (Sandbox Code Playgroud)
bgo*_*dst 10
首先,确保您使用bash,而不是sh,因为两者之间的功能存在显着差异.
一个简单的解决方案是命令替换,但要注意命令输出中的尾随换行符将被删除.此外,当回显时,为了保护变量的内容(例如空格和glob字符)不受shell的元处理,你必须双引号:
#!/bin/bash
output=$(node app.js);
echo "$output";
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是更新版本的流程替换bash.在这种情况下,您甚至可以将输出收集为行数组:
#!/bin/bash
exec 3< <(node app.js);
lines=();
while read -r; do lines+=("$REPLY"); done <&3;
exec 3<&-;
echo "${lines[@]}";
Run Code Online (Sandbox Code Playgroud)