【发布时间】:2016-01-19 03:11:22
【问题描述】:
我在将 -j 4 添加到我的 make 命令时遇到问题。它导致我的 Bash 脚本失败:
./cryptest.sh: line 208: make -j 4: command not found
ERROR: failed to make cryptest.exe
这是确定何时添加 -j 4 的 Bash。它似乎大部分都在工作:
# $MAKE is already set and either 'make' or 'gmake'
CPU=$(cat /proc/cpuinfo | grep -c '^processor')
if [ "$CPU" -gt "1" ]; then
echo "$CPU processors, using \"$MAKE -j $CPU\""
MAKE="$MAKE -j $CPU"
fi
然后,调用它并导致错误的 Bash:
"$MAKE" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS"
if [ "${PIPESTATUS[0]}" -ne "0" ]; then
echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS"
fi
Stack Overflow 上也有类似的问题与其他命令类似,例如 Execute command as a string in Bash,但对我来说如何简单地将命令的参数附加到命令中并不明显。并且在上面的错误中执行明显的结果,所以像How can I concatenate string variables in Bash 这样的问题在这种情况下似乎不起作用。
如何将 -j 4 附加到 $MAKE?
我还尝试了以下方法:
MAKE="$MAKE" "-j $CPU"
但结果是:
./cryptest.sh: line 186: -j 4: command not found
最后,有 50 到 75 个:
export CXXFLAGS="..."
"$MAKE" static dynamic ...
所以我想修复 1 个"$MAKE",而不是 50 或 75 次使用它。
【问题讨论】:
-
你是在windows中做这个吗?在 MS-DOS 上,“-j”选项无效,因为该系统不支持多处理。如果“-j”选项后跟一个整数,这是一次执行的配方数;这称为作业槽数。如果在“-j”选项之后没有看起来像整数的东西,则作业槽的数量没有限制。作业槽的默认数量是一个,这意味着串行执行(一次一件事)。
-
@user3589054 - 它是 Linux。在这种情况下,它是一个 Ubuntu 14.04.3 LTS 服务器。脚本位于cryptest.sh。
-
"$MAKE" static dynamic ...为什么要用双引号?