Bash 脚本,获取物理核心数作为数字并进行迭代

Bash 脚本,获取物理核心数作为数字并进行迭代

我写了一个脚本来显示机器的物理核心数。但是,我希望结果是数字,而不是字符串。

脚本如下:

phycores=echo $sudoPW | cat /proc/cpuinfo | grep -m 1 "cpu cores" | awk '{print $ 4;}'
echo $phycores  

for i in {1..$phycores}
do
   echo "Core $i"
done

答案1

我发现几个问题:

  • 为什么要echo $sudoPW通过管道传输到 cat?cat 会忽略它而不需要-某处。

  • 并且$phycores没有反引号就不会设置,或者$()这不能是您正在运行的实际脚本,并且它仍然将 $phycores 设置为带有换行符的数字?

  • {1..n}构造不适用于变量,如果您的$phycores是 4,那么它只会将$i变量设置为{1..4}在 stackoverflow 上查看此问题了解更多详情。(换行符$phycores应该没关系)

无论如何,这应该是一个更实用的脚本

phycores=$(echo $sudoPW|cat - /proc/cpuinfo|grep -m 1 "cpu cores"|awk '{print $ 4;}')

echo $phycores  

for ((i=1;i<=phycores;++i))
do
   echo "Core $i"
done

相关内容