
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 $sudoPW
canal para o gato? gato ignora sem um-
lugar.E
$phycores
nã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ê$phycores
fosse 4, apenas definiria a$i
variável como{1..4}
.Veja este Q no stackoverflowpara mais detalhes. (Uma nova linha$phycores
nã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