我写了一个脚本来显示机器的物理核心数。但是,我希望结果是数字,而不是字符串。
脚本如下:
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