Массив Bash не добавляет элементы в конец

Используйте команду:

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

0
25.06.2020, 13:04
1 ответ

Ваш цикл в порядке (, за исключением того, что вы забыли указать $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
4
28.04.2021, 23:12

Теги

Похожие вопросы