Скрипт Bash, получить количество физических ядер в виде числа и выполнить итерацию

Скрипт Bash, получить количество физических ядер в виде числа и выполнить итерацию

Я написал скрипт, который показывает количество физических ядер машины. Однако я хотел бы, чтобы результатом было число, а не строка.

Вот сценарий:

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передано коту? Кот игнорирует его без указания -места.

  • И $phycoresне устанавливается без обратных кавычек, или $()это не может быть фактический скрипт, который вы запускаете, и он все равно устанавливает $phycores в число с новой строкой?

  • Конструкция {1..n}не работает с переменной. Если вас $phycores4, то она просто устанавливает $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

Связанный контент