
マシンの物理コアの数を表示するスクリプトを作成しました。ただし、結果は文字列ではなく数値にしたいと思います。
スクリプトは次のとおりです。
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
cat にパイプされるのですか? cat は-
somewhere なしでそれを無視します。$phycores
バックティックなしでは設定されません。または、実際に実行しているスクリプトではないのに、$phycores が改行付きの数値に設定されるのでしょうか$()
?この
{1..n}
構造は変数では機能しません。変数が$phycores
4 の場合は、単に$i
変数が に設定されます{1..4}
。stackoverflowのこのQを参照してください詳細については、こちらをご覧ください。(改行は$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