我有一个接受整数arg的node.js文件。
我正在尝试编写一个bash脚本来查找可用内核的数量,并为每个可用内核启动main.js.
对于1核心,它应该调用:
node main.js 3000 &
2核:
node main.js 3000 &
node main.js 30001 &
等等......
这是我的bash脚本:
#!/bin/bash
numCores=`getconf _NPROCESSORS_ONLN`
i=0
j=3000
while [ $i < $numCores ]
do
j=$($j+$i)
node /myApp/main.js $j &
i=$($i+1)
done
当我尝试运行它时,我收到此错误:
bash launchnode.sh
launchnode.sh: line 5: 2: No such file or directory
main.js和launchnode.sh在同一目录中。
任何帮助?
答案 0 :(得分:3)
错误在于:
while [ $i < $numCores ]
在bash中<
用于输入重定向。 [
是test
命令的别名,test 0 < 2
表示&#34;将名为2
的文件中的输入发送到命令test 0
。
相反,请使用test
&#39; -lt
选项进行小于比较。另外,不要忘记引用变量:
while [ "$i" -lt "$numCores" ]
或者,如果您仅定位bash,则可以使用算术扩展:
while (( i < numCores ))
您还需要在后续行中使用双括号进行算术运算:
i=$(($j+$i))