Проверьте эту ссылку:
https://faq.i3wm.org/question/5312/how-to-toggle-onoff-external- and-internal-monitors.1.html
Сценарий написан на bash и также дает инструкции по установке сочетания клавиш в конфигурационном файле i3.
bash
массивы, подобные ksh
, на самом деле не являются массивами, они больше похожи на ассоциативные массивы с ключами, ограниченными положительными целыми числами (или так называемыми разреженными массивами). Для оболочки с реальными массивами вы можете взглянуть на такие оболочки, как rc
, es
, fish
, yash
,zsh
(или даже csh
/tcsh
, хотя у этих оболочек так много проблем их лучше избегать ).
zsh
:a=(1 2 3 4 5)
a[3]=() # remove the 3rd element
a[1,3]=() # remove the first 3 elements
a[-1]=() # remove the last element
(Обратите внимание, что в zsh unset 'a[3]'
фактически устанавливает пустую строку для улучшения совместимости сksh
)
yash
:a=(1 2 3 4 5)
array -d a 3 # remove the 3rd element
array -d a 1 2 3 # remove the first 3 elements
array -d a -1 # remove the last element
fish
(не борновская -подобная оболочка в отличие от bash
/zsh
):set a 1 2 3 4 5
set -e a[3] # remove the 3rd element
set -e a[1..3] # remove the first 3 elements
set -e a[-1] # remove the last element
es
(на основе rc
, а не Борна -как)a = 1 2 3 4 5
a = $a(... 2 4...) # remove the 3rd element
a = $a(4...) # remove the first 3 elements
a = $a(... `{expr $#a - 1}) # remove the last element
# or a convoluted way that avoids forking expr:
a = $a(... <={@{*=$*(2...); return $#*} $a})
ksh
иbash
Вы можете использовать массивы как обычные массивы, если вы:
a=("${a[@]}")
после каждой операции удаления или вставки, которая могла привести к тому, что список индексов не является непрерывным или не начинается с 0. Также обратите внимание, что массивы ksh
/bash
начинаются с 0, а не с 1 (, за исключением$@
(некоторым образом )).
Это приведет к очистке элементов и перемещению их к индексу 0, 1, 2... последовательно.
Также обратите внимание, что вам нужно указать number[i]
в :
unset 'number[i]'
В противном случае это будет эффективно запускать unset numberi
, если в текущем каталоге есть файл с именем numberi
.