Mar*_*tin 1 parallel-processing bash shell sh
ATM 我目前的想法是,这样做:
a_NODE=$(node -v) &
a_NPM=v$(npm -v) &
a_YARN=v$(yarn -v) &
a_CURL=v$(curl --version | head -n 1 | awk '{ print $2 }') &
wait
echo "Node: $a_NODE"
echo "NPM: $a_NPM"
echo "YARN: $a_YARN"
echo "curl: $a_CURL"
Run Code Online (Sandbox Code Playgroud)
但这实际上会跳过所有变量定义并打印空版本字符串。据我所知,该wait
命令应该让脚本等待,直到所有变量都设置完毕,然后才开始打印 - 但事实并非如此。
后台命令在子 shell 中运行,因此变量赋值不在原始 shell 进程中。
将输出重定向到文件,并在主 shell 中读取这些文件。
node -v > /tmp/node.$$ &
npm -v > /tmp/npm.$$ &
yarn -v > /tmp/yarn.$$ &
curl --version | head -n 1 | awk '{ print $2 }' > /tmp/curl.$$ &
wait
a_NODE=$(</tmp/node.$$)
a_NPM=$(</tmp/npm.$$)
a_YARN=$(</tmp/yarn.$$)
a_CURL=$(</tmp/curl.$$)
rm -f /tmp/{node,npm,yarn,curl}.$$
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
425 次 |
最近记录: |