Script Bash, obtenha o número de núcleos físicos como número e itere

Script Bash, obtenha o número de núcleos físicos como número e itere

Escrevi um script que mostra vários núcleos físicos da máquina. No entanto, gostaria que o resultado fosse um número, não uma string.

Aqui está o roteiro:

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

Responder1

Estou identificando alguns problemas:

  • Por que o echo $sudoPWcanal para o gato? gato ignora sem um -lugar.

  • E $phycoresnão é definido sem crases ou $()esse não pode ser o script real que você está executando e ainda define $phycores como um número com uma nova linha?

  • A {1..n}construção não funciona com uma variável; se você $phycoresfosse 4, apenas definiria a $ivariável como {1..4}.Veja este Q no stackoverflowpara mais detalhes. (Uma nova linha $phycoresnão deve importar)

De qualquer forma, este deve ser um script mais funcional

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

informação relacionada