Быстрое чтение urxvt (1)
, а затем синопсис упомянутого urxvt (7)
показывает, что терминалы rxvt-unicode
поддерживают escape-последовательности, которые могут изменяться, например шрифт:
SYNOPSIS
# set a new font set
printf '\33]50;%s\007' 9x15,xft:Kochi" Mincho"
Их нужно будет распечатать на каждом открытом терминале, и, вероятно, потребуется некоторый перевод, чтобы преобразовать формат .Xdefaults
во что-то подходящее для такой печати.
Попробуйте:
Start=1923
Stop=2267
MyVar=
for ((i=Start/100; i<=Stop/100; i++)); do
MyVar="$MyVar;/path/to/files$i"
done
MyVar=${MyVar:1}
echo "$MyVar"
Приведенный выше оператор echo
дает:
/path/to/files19;/path/to/files20;/path/to/files21;/path/to/files22
Как это работает:
MyVar=
Это гарантирует, что переменная MyVar
пуста.
for ((i=Start/100; i<=Stop/100; i++)); do
Это запускает цикл по переменной i
.
MyVar="$MyVar;/path/to/files$i"
Это добавляет строку к MyVar
каждый раз при запуске цикла.
done
Это сигнализирует об окончании цикла.
MyVar=${MyVar:1}
Это удаляет нежелательную точку с запятой в начале строки.
echo "$MyVar"
Отображает результат.
Используя очень похожую логику:
MyVar=$(awk -v Start=1923 -v Stop=2267 'BEGIN{for (i=int(Start/100);i<=int(Stop/100);i++) MyVar=MyVar";/path/to/files" i; print substr(MyVar,2)}')
echo "$MyVar"
Приведенный выше оператор echo
дает:
/path/to/files19;/path/to/files20;/path/to/files21;/path/to/files22
Это похоже на задание для Brace Expansion, плюс немного eval над строковыми манипуляциями:
MyVariable=$(eval "printf '%s' /path/to/files{${Start:0:2}..${Stop:0:2}}\;")
Затем вы можете избавиться от последнего двоеточия semi -с помощью${MyVariable%;}
В приведенном выше примере я предполагаю, что ваши ${Start}
и ${Stop}
действительно всегда являются как минимум 3-значным числом, иначе вам нужно будет настроить манипуляции со строками.