Как добавить / удалить элемент в массив в bash?

Я хочу ввести ½ в режиме vi, но он будет содержать дополнительный символ ½ .

Нет.

Что происходит, так это то, что ваш терминал отправляет этот символ в кодировке UTF-8. Это символ U + 00BD, а его кодировка UTF-8 - это две 8-битные последовательности символов, шестнадцатеричные значения которых равны C2 BD .

vim думает, что вы набираете не в UTF-8. Он считает, что вы набрали два 8-битных символа, первый символ U + 00C2, а затем символ U + 00BD. Следовательно, он вставляет эти два символа.

Заставить vim поверить в то, что вы используете UTF-8, - это путешествие в сложный мир локалей и кодировок. В настоящее время vim считает, что ваш терминал генерирует ввод Latin-1 (ISO 8859-1). Вам нужен vim, чтобы считать, что ваш терминал генерирует ввод UTF-8.

Более того: из того, что скрыто в комментариях к другому ответу, также очевидно, что ваш текст справки также не обрабатывается как UTF-8, что указывает на то, что он не работает внутри UTF-8, вероятно, потому что ваш переменные среды ( LANG , LC_ALL и т. д.) не определяют локаль UTF-8. Чтобы vim правильно обрабатывал ввод UTF-8, лучше всего использовать UTF-8 внутри в качестве общей кодировки.

Лучше всего действовать, например,

:set termencoding=utf-8 encoding=utf-8
. Но вы также можете настроить переменные среды.
49
03.10.2017, 20:52
2 ответа
# array declaration  
arr=()  

#Function to read data from file a and add into array  
fun_add_in_array()
{  
input=$1  
while IFS=',' read -r f1 f2  
do  
    echo "Element1 : $f1"  
    echo "Element2 : $f2"  
    arr+=( "$f1" )  
done < "$input"  
}  

#Function to print a array  
fun_read_array()  
{  
arr=("$@")  
for i in "${arr[@]}"  
do  
    echo $i  
done  
}
1
27.01.2020, 19:34

Создание индексированного массива:

$ declare -a A
$ declare -p A

declare -a A

Добавьте несколько элементов в массив:

$ A+=(foo)
$ A+=(bar)
$ A+=("baz quux")
$ declare -p A

declare -a A=([0]="foo" [1]="bar" [2]="baz quux")

Удалите средний элемент, сделав его массивом с разреженными индексами:

$ unset A[1]
$ declare -p A

declare -a A=([0]="foo" [2]="baz quux")

Удалить последний элемент из массива разреженных индексов:

$ unset A[-1]
$ declare -p A

declare -a A=([0]="foo")

2
22.03.2020, 04:09

Теги

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