
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 $sudoPW
an cat weitergeleitet? cat ignoriert es ohne ein-
Irgendwo.Und
$phycores
wird 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$phycores
einfach auf gesetzt .$i
{1..4}
Sehen Sie sich diese Frage auf stackoverflow anfür weitere Einzelheiten. (Eine neue Zeile$phycores
sollte 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