
我編寫了一個腳本來顯示機器的多個物理核心。但是,我希望結果是一個數字,而不是一個字串。
這是腳本:
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