Когда переменная массива представляет весь массив и когда элемент проиндексирован с помощью «0»?

Попробуйте iperf.

Запустите его на сервере с помощью iperf3 -sи на клиенте с помощью iperf3 -c server

По умолчанию сервер прослушивает TCP-порт 5201.

Подробнее , посмотрите на справочную страницу iperf3(1)

0
07.05.2016, 03:17
2 ответа

Я думаю, ваше замешательство связано со словом «ссылка».

Вы не ссылаетесь на переменную массива после объявить вообще; вы указываете только имя x .

Чтобы ссылаться на переменную, вы должны поставить перед именем $ .

Попробуйте поискать на странице руководства bash все экземпляры referenc и прочитать их.


Что касается второго вопроса:

В [[-v myarr]] , myarr означает массив или myarr [0] ?

По тесту это означает myarr [0] .

$ declare -p myarr
bash: declare: myarr: not found
$ myarr=()
$ declare -p myarr
declare -a myarr='()'
$ echo $myarr

$ [[ -v myarr ]] && echo is set
$ [[ -v myarr[0] ]] && echo is set
$ [[ -v myarr[1] ]] && echo is set
$ myarr+=([1]=b)
$ declare -p myarr
declare -a myarr='([1]="b")'
$ echo $myarr

$ [[ -v myarr ]] && echo is set
$ [[ -v myarr[0] ]] && echo is set
$ [[ -v myarr[1] ]] && echo is set
is set
$ myarr+=([0]=q)
$ declare -p myarr
declare -a myarr='([0]="q" [1]="b")'
$ echo $myarr
q
$ [[ -v myarr ]] && echo is set
is set
$ [[ -v myarr[0] ]] && echo is set
is set
$ [[ -v myarr[1] ]] && echo is set
is set
$ 
3
28.01.2020, 02:27

Вы смешиваете переменные со строками, представляющими «имена переменных».

$ переменная - это переменная, переменная - это просто строка, которая интерпретируется как переменная некоторыми командами.

Попробуйте следующее:

$ a=x
$ x=(111 222 333)
$ declare -p $a
declare -a x='([0]="111" [1]="222" [2]="333")'

Расширение переменной a ( $ a ) дало строку x , которая была интерпретирована с помощью объявления как «имя-переменной», а затем развернута и напечатаны.

В [[-v myarr]] также тест интерпретирует строку myarr как переменную, поэтому это всегда вся переменная.

Попробуйте

$ a=myarr
$ unset myarr
$ [[ -v $a ]] && echo set || echo unset
unset

$ myarr[5]=five
$ [[ -v $a ]] && echo set || echo unset
set
0
28.01.2020, 02:27

Теги

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