Bash-Skript, Anzahl der physischen Kerne als Zahl abrufen und iterieren

Bash-Skript, Anzahl der physischen Kerne als Zahl abrufen und iterieren

Ich habe ein Skript geschrieben, das die Anzahl der physischen Kerne der Maschine anzeigt. Das Ergebnis soll jedoch eine Zahl sein, kein String.

Hier ist das Skript:

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

Antwort1

Mir sind ein paar Probleme aufgefallen:

  • Warum wird es echo $sudoPWan cat weitergeleitet? cat ignoriert es ohne ein -Irgendwo.

  • Und $phycoreswird nicht ohne Backticks festgelegt, oder $()das kann nicht das eigentliche Skript sein, das Sie ausführen, und es setzt $phycores trotzdem auf eine Zahl mit einer neuen Zeile?

  • Die {1..n}Konstruktion funktioniert nicht mit einer Variable. Wenn Sie 4 wären, würde die Variable $phycoreseinfach auf gesetzt .$i{1..4}Sehen Sie sich diese Frage auf stackoverflow anfür weitere Einzelheiten. (Eine neue Zeile $phycoressollte keine Rolle spielen)

Wie auch immer, dies sollte ein funktionierenderes Skript sein

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

verwandte Informationen