我在将 -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次使用它。
答案 0 :(得分:3)
您正在尝试运行名为“make -j 4”的命令,而不是使用参数“-j”和“4”运行命令“make”。在这种情况下,您只需使用
运行命令即可$MAKE static dynamic cryptest.exe 2>&1 ...
即没有引用$MAKE
的扩展。但是,通常不应将命令调用存储在变量中,只应命令 names 。将参数存储在(最好)数组中。
MAKE=make
MAKEARGS=( -j 4 )
"$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe ...