Я лично использую webacula, веб-GUI для Бакулюмов, который позволяет выполнять много определенных задач, включая доступ к консоли Bacula в случае необходимости. Относительно документации Вы посмотрели на веб-сайт Бакулюмов? Существует хорошая документация и хорошая Wiki также.
Расширение отсрочки скобки на самом деле является в случае EVAL
, в частности, если вы хотите, чтобы обоснованные вещи - Обычное расширение параметров не делает правильной вещи в нужное время.
Это должно делать то, что, похоже, вы хотите:
LIST={JF,JFE,RFS,JBF,JFI,JMCB}
for year in {1998..2000} {2009..2011}
do
eval "y$year=($LIST-$year)"
tmp="y$year[@]"
echo "${!tmp}"
done
Вы не можете косвенно в массиве, поэтому необходимо настроить массив внутри EVAL
тоже, если вы хотите распечатать его. Если вы этого не сделаете, вы можете взять все после ;
. TMP
используется для косвенного расширения : с TMP
, установленным на «Y $ год [@]»
, где
заменяется его значением, расширение $ {! TMP}
дает содержимое массива этой итерации (что $ {Y1998 [@]}
, ETC, расширилось бы к).
Приведенная выше выводится:
JF-1998 JFE-1998 RFS-1998 JBF-1998 JFI-1998 JMCB-1998
JF-1999 JFE-1999 RFS-1999 JBF-1999 JFI-1999 JMCB-1999
JF-2000 JFE-2000 RFS-2000 JBF-2000 JFI-2000 JMCB-2000
JF-2009 JFE-2009 RFS-2009 JBF-2009 JFI-2009 JMCB-2009
JF-2010 JFE-2010 RFS-2010 JBF-2010 JFI-2010 JMCB-2010
JF-2011 JFE-2011 RFS-2011 JBF-2011 JFI-2011 JMCB-2011
, а также создавать массивы Y1998
... Y2011
. объявляет
, не требуется строго необходимым, хотя они позволяют пропустить EVAL
, если вы нацеливаетесь на это и не нужно затрагивать.
Я предлагаю, чтобы это, вероятно, не так, как вы действительно хотите достичь своей базовой цели, хотя, что бы то ни было. Вложенные петель не являются злым, и если каким-либо кусочком он жесткозедировал, вы можете абстрактным.
. / SYS
файловая система (SYSFS) содержит файлы, которые предоставляют информацию о Устройства: включенные ли он, имя и модель и модель поставщика, на какую шину устройство подключено устройство и т. Д. Оно представляет интерес к приложениям, которые управляют устройствами.
Файловая система / dev
содержит файлы, которые позволяют программам для доступа к самим устройствам: запись данных в последовательный порт, прочитайте жесткий диск и т. Д. Оно представляет интерес к приложениям, которые получают доступ к устройствам.
Метафора состоит в том, что / sys
обеспечивает доступ к упаковке, а / dev
обеспечивает доступ к содержанию коробки.
Файлы в / SYS
не являются узлами устройств, а символические ссылки и обычные файлы. Эти регулярные файлы имеют особые в этом чтении или записи им, вызывают функции, специфичные файлами в ядре, такие как узлы устройства. Разница в том, что файлы в / SYS
работают таким образом из-за файловой системы, на которой они включены, тогда как узлы устройства работают так из-за характеристик узлов устройств (тип файла, указывающий на устройство (блок или символ) устройство, и устройство основное и незначительное число, указывающее, какое устройство это).
Причина / DEV
, существующих независимо от / SYS
, частично историческими: / dev
даты обратно на рассвете Unix, а / SYS
является гораздо более свежем изобретением. Если Linux был разработан сегодня без исторического фона, / dev / sda
может быть / sys / block / sda / content
.
Вот один из способов (с расширением скоба) :
unset y _y
for y in {JF,JFE,RFS,JBF,JFI,JMCB,}-{{1998..2000},{2009..2011}}
do case "${_y=y${y#*-}[@]}" in
(y${y#-}*) echo "${!_y}" ;;
(*) declare -a "${_y%???}+=($y)";;
esac; unset y _y; done
, который расширит ваш параметр, установленный для PLOOP для
для всех желаемых Значения Plus Дополнительный последний набор, который будет состоять только в годы. Для каждого, что делает , начнутся с цифры , объявляет
Добавляет элемент массива на любой y $ {y ## * [! 0-9]}
И для каждого, что , echo
печатает его.
Так что для первых 36 итераций он создает каждый массив, а за последние 6 он печатает каждый. Выход:
JF-1998 JFE-1998 RFS-1998 JBF-1998 JFI-1998 JMCB-1998
JF-1999 JFE-1999 RFS-1999 JBF-1999 JFI-1999 JMCB-1999
JF-2000 JFE-2000 RFS-2000 JBF-2000 JFI-2000 JMCB-2000
JF-2009 JFE-2009 RFS-2009 JBF-2009 JFI-2009 JMCB-2009
JF-2010 JFE-2010 RFS-2010 JBF-2010 JFI-2010 JMCB-2010
JF-2011 JFE-2011 RFS-2011 JBF-2011 JFI-2011 JMCB-2011
вот альтернатива, возможно ...
for year in 1998 1999 2000 2009 2010 2011
do printf "%s-$year " JF JFE RFS JBF JFI JMCB
echo; done
, что, по крайней мере, принесет вам тот же выход ... Чтобы также хранить, что в массиве, вероятно, вы можете ...
for year in 1998 1999 2000 2009 2010 2011
do declare -a "y$year=($(printf "%s-$year " JF JFE RFS JBF JFI JMCB |
tee /dev/fd/2 ))"
year=y$year[@]; year=(${!year})
echo "${#year[@]}"
done 2>&1; unset year
Это вывод от второй команды, но первые отпечатывает одинаковые SANS THE 6 - то, что только указывает счетчик элемента массива.
JF-1998 JFE-1998 RFS-1998 JBF-1998 JFI-1998 JMCB-1998 6
JF-1999 JFE-1999 RFS-1999 JBF-1999 JFI-1999 JMCB-1999 6
JF-2000 JFE-2000 RFS-2000 JBF-2000 JFI-2000 JMCB-2000 6
JF-2009 JFE-2009 RFS-2009 JBF-2009 JFI-2009 JMCB-2009 6
JF-2010 JFE-2010 RFS-2010 JBF-2010 JFI-2010 JMCB-2010 6
JF-2011 JFE-2011 RFS-2011 JBF-2011 JFI-2011 JMCB-2011 6
Помните, что объявляет
- это команда и var $ Explate = (что-то $ расширяется)
Аргумент - это просто - ARG. Объявление
args расширяется так же, как и любой другой - что не относится к VAR $ Expand = $ Explay
. Таким образом, вы можете косвенно объявить
так же, как вы можете косвенно экспортировать
или что-то еще - трудности, которые вы используете, не нужны.
Преобразование фигурных скобок в массив с помощью set -
.
Затем у вас есть простой двумерный цикл для построения вашего вывода:
set -- {JF,JFE,RFS,JBF,JFI,JMCB}
for year in {1998..2000} {2009..2011}; do
printf "y%s: " $year
for code do
printf "%s-%s " $code $year
done
echo
done
Результаты:
y1998: JF-1998 JFE-1998 RFS-1998 JBF-1998 JFI-1998 JMCB-1998
y1999: JF-1999 JFE-1999 RFS-1999 JBF-1999 JFI-1999 JMCB-1999
y2000: JF-2000 JFE-2000 RFS-2000 JBF-2000 JFI-2000 JMCB-2000
y2009: JF-2009 JFE-2009 RFS-2009 JBF-2009 JFI-2009 JMCB-2009
y2010: JF-2010 JFE-2010 RFS-2010 JBF-2010 JFI-2010 JMCB-2010
y2011: JF-2011 JFE-2011 RFS-2011 JBF-2011 JFI-2011 JMCB-2011