
Я написал скрипт, который показывает количество физических ядер машины. Однако я хотел бы, чтобы результатом было число, а не строка.
Вот сценарий:
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}
не работает с переменной. Если вас$phycores
4, то она просто устанавливает$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