Используйте команду:
lscpu
Чтобы узнать все характеристики процессора:
Чтобы получить конкретную частоту вашего процессора, используйте команду с grep, например:
lscpu | grep MHz
Это даст вам результат, подобный:
CPU MHz: 2723.789
Чтобы увидеть колебания скорости процессора в реальном времени, используйте:
watch -n1 "lscpu | grep MHz | awk '{print $1}'";
https://askubuntu.com/questions/916382/ubuntu-get-actual-current-cpu-clock-speed
Ваш цикл в порядке (, за исключением того, что вы забыли указать $i
), проблема в вашем echo $array
, который не печатает все элементы массива в bash
.
bash
скопировал неудобную конструкцию массива ksh
вместо zsh
, csh
, tcsh
, rc
...
В ksh $array
является сокращением от${array[0]}
(расширяется до содержимого элемента индекса 0 или пустой строки, если она не установлена ).
Чтобы расширить до всех элементов массива, вам нужно:
$ printf ' - "%s"\n' "${array[@]}"
- "1"
- "2"
- "3"
- "4"
Для первого элемента массива (, который может не быть элементом с индексом 0, так как массивы ksh/bash разрежены):
$ printf '%s\n' "${array[@]:0:1}"
1
И для элемента индекса 0 (, который в вашем примере будет таким же, как первый элемент):
$ printf '%s\n' "$array"
1
или:
$ printf '%s\n' "${array[0]}"
1
Чтобы напечатать определение переменной, вы также можете использоватьtypeset -p
:
ksh93u+$ typeset -p array
typeset -a array=( 1 2 3 4 )
bash-5.0$ typeset -p array
declare -a array=([0]="1" [1]="2" [2]="3" [3]="4")
bash-5.0$ unset 'array[0]'
bash-5.0$ typeset -p array
declare -a array=([1]="2" [2]="3" [3]="4")
bash-5.0$ printf '%s\n' "$array"
bash-5.0$ printf '%s\n' "${array[@]:0:1}"
2