Вопросы с тегом «array»

13
Bash скрипт ждет процессов и получает код возврата

Я пытаюсь создать скрипт, который запустит много фоновых команд. Для каждой фоновой команды мне нужно получить код возврата. Я пробовал следующий скрипт: #!/bin/bash set -x pid=() return=() for i in 1 2 do echo start $i ssh mysql "/root/test$i.sh" & pid[$i]=$! done for i in ${#pid[@]} do echo...

13
Как перенести массив в bash-стиле в пепел?

Некоторое время назад я написал скрипт bash, который теперь должен работать в среде с ash. На bashэто было похоже: services=( "service1.service" "service2.service" "service3.service" ) for service in "${services[@]}" do START $service done START() { echo "Starting "$1 systemctl start $1 } На самом...

12
Пересечение двух массивов в BASH

У меня есть два массива, как это: A=(vol-175a3b54 vol-382c477b vol-8c027acf vol-93d6fed0 vol-71600106 vol-79f7970e vol-e3d6a894 vol-d9d6a8ae vol-8dbbc2fa vol-98c2bbef vol-ae7ed9e3 vol-5540e618 vol-9e3bbed3 vol-993bbed4 vol-a83bbee5 vol-ff52deb2) B=(vol-175a3b54 vol-e38d0c94 vol-2a19386a...

12
Проверка поддержки массивов оболочкой

Существует ли краткий способ проверки поддержки массивов локальной Bourne-подобной оболочкой в ​​командной строке? Это всегда возможно: $ arr=(0 1 2 3);if [ "${arr[2]}" != 2 ];then echo "No array support";fi или тестирование $SHELLи версия оболочки: $ eval $(echo "$SHELL --version") | grep version...

11
Ассоциативные массивы в скриптах оболочки

Я видел трюк для реализации ассоциативных массивов в сценарии оболочки. Например, print array["apples"]может быть написано, echo \$array$keyгде ключ = яблоки. Однако не было упоминания о том, как генерировать ключи для перебора массива. Единственный способ, которым я мог придумать, - хранить ключи...

11
Подсчитать количество элементов в массиве bash, где имя массива является динамическим (т.е. хранится в переменной)

Краткое изложение вопроса: Существует ли встроенный метод bash для подсчета количества элементов в массиве bash, где имя массива является динамическим (т.е. хранится в переменной), не прибегая к созданию полной копии массива или его использованию eval? Дополнительная информация: Используя...

11
Одиночная скобка в присваивании переменной bash

Мне было интересно об одиночных скобках в bash. Я знаю, что они используются для выполнения команд в подоболочках и что они используются для создания массивов, но используются ли они для чего-то еще? Одна вещь, которая привлекла мое внимание, заключается в том, что когда вы используете var=(hello)...

11
Переход от строки к массиву «слов» в Bash

Мне нужно перейти от строки к массиву, где каждая запись является каждое слово в этой строке. Например, начиная с: VotePedro="Vote for Pedro" Мне нужен массив: Vote For Pedro Который я тогда должен быть в состоянии повторить как: for i in "${votePedroArray[@]}" do ## Do something...

10
Как удалить новую строку, добавленную readarray при использовании разделителя?

VAR=a,b,c,d # VAR=$(echo $VAR|tr -d '\n') echo "[$VAR]" readarray -td, ARR<<< "$VAR" declare -p ARR Результат: [a,b,c,d] declare -a ARR=([0]="a" [1]="b" [2]="c" [3]=$'d\n') Как я могу сказать, readarrayчтобы не добавлять заключительный перевод строки \n? В чем смысл последнего...

10
Непрямой возврат всех элементов в массиве

Страница руководства Bash описывает использование ${!a}для возврата содержимого переменной, имя которой является содержимым a(уровень косвенности). Я хотел бы знать, как вернуть все элементы в массиве, используя это, т.е. a=(one two three) echo ${a[*]} возвращается one two three Я хотел бы для: b=a...

10
Записать массив по умолчанию в переменную в Bash

я ожидал excludes="${excludes:-( ${default_excludes[@]} )}" быть массивом, если $excludesон пуст. К сожалению, материал после :-принимается за строку. Я пропустил некоторые искажения синтаксиса, или я должен использовать неуклюжий if [ -z "${excludes:-}" ] then excludes=( "${default_excludes[@]}" )...

9
В цикле над массивом добавьте элемент в массив

У меня есть проблема с для цикла в Bash. Например: у меня есть массив ("etc" "bin" "var"). И я перебираю этот массив. Но в цикле я хотел бы добавить некоторое значение в массив. Например array=("etc" "bin" "var") for i in "${array[@]}" do echo $i done Это отображает etc bin var(конечно, на...

9
Передача нескольких каталогов в опцию -prune в find

Я использую findдля поиска и удаления файлов резервных копий, но хочу исключить определенные каталоги из поиска. Резервные имена файлов может заканчиваться .bck, bak, ~или backup. Код минимального рабочего примера (MWE), который нужно исключить только из трех каталогов: #! /bin/bash find . -type d...

9
Gawk: передача массивов в функции

Застрял в GNU awk 3.1.6 и думаю, что я обошел его ошибки массива, но все еще имеет то, что похоже на проблему с областью действия в 600-строчной программе awk. Нужно проверить понимание области действия массива в awk, чтобы найти мою ошибку. Учитывая этот иллюстративный код awk ... function foo(ga)...

9
Массивы и циклы в зш

Я пытаюсь изучить циклы и манипуляции с массивами в zsh. Скажем, у меня есть два массива в zsh с одним и тем же неизвестным количеством элементов, и каждый из них содержит список путей, например LOCAL_ARRAY=($LOCAL_PATH_1 $LOCAL_PATH_2 $LOCAL_PATH_3) REMOTE_ARRAY=($REMOTE_PATH_1 $REMOTE_PATH_2...

9
Bash сортировать массив по длине элементов?

Учитывая массив строк, я хотел бы отсортировать массив в соответствии с длиной каждого элемента. Например... array=( "tiny string" "the longest string in the list" "middle string" "medium string" "also a medium string" "short string" ) Должен сортировать в ... "the longest string in the list" "also...

9
Передать ассоциативный массив как список параметров в скрипт

В скрипте у меня есть ассоциативный массив, как: declare -A VARS=( ["key1"]="value1" ["key2"]="value" ) Есть ли одна команда, чтобы преобразовать это в список параметров в форме --key1=value1 --key2=value2 без необходимости переписывать вручную --key1="${VARS[key1]}" --key2="${VARS[key2]}" вариант...

8
Сортировать массив путей к файлам по их базовым именам

Предположим, что у меня есть список путей файлов, хранящихся в массиве filearray=("dir1/0010.pdf" "dir2/0003.pdf" "dir3/0040.pdf" ) Я хочу отсортировать элементы в массиве в соответствии с базовыми именами имен файлов в числовом порядке sortedfilearray=("dir2/0003.pdf" "dir1/0010.pdf"...