Согласно ArchLinux wiki , вы можете получить список совместимых терминальных шрифтов (для TTY )с помощью команды:
ls -l /usr/share/kbd/consolefonts/ | grep -i ".psfu.gz"
Чтобы вывести список всех доступных шрифтов, выполните:
fc-list
И поиск шрифта с помощью:
fc-list | grep -i "font name"
Надеюсь, это поможет.
Ваш код с новыми строками для удобства чтения
env | awk '
match($0, /PREFIX_.*/) {
substr($0, RSTART+8, RLENGTH)
split($0, parts, "=")
printf "--set service.%s=%s ", parts[1], parts[2]
}
'
substr
работает нормально. Вы ничего не делаете с возвращаемым значением. substr сама по себе не изменяет $0.
Во-первых, я бы рекомендовал сделать регулярное выражение более конкретным, чтобы оно находило PREFIX_VAR=something
, а неsome_other_var=$PREFIX_VAR
Затем, поскольку вы знаете, что такое PREFIX, я бы посоветовал вам не использовать RSTART и т. д.
Наконец, используйте =
в качестве разделителя полей, чтобы упростить работу с именем переменной.
env | awk -F= '$1 ~ /^PREFIX_/ {printf "--set service.%s=%s ", substr($1,8), $2}'
Этот код, как и ваш, не будет правильно обрабатывать значение переменной, содержащее знак равенства. Соединение полей 2..NF в awk немного затруднительно:
env | awk '
function join (fstart, fend, separator, i, result) {
for (i = fstart; i <= fend; i++)
result = result $i (i == fend ? "" : separator)
return result
}
$1 ~ /^PREFIX_/ {
var = substr($1, 8)
value = join(2, NF, "=")
printf "--set service.%s=%s ", var value
}
'
Использование cat file
вместо вашей команды env
:
$ cat file | awk 'sub(/^PREFIX_/,"--set service."){out=out sep $0; sep=OFS} END{print out}'
--set service.VARIABLE_1=100 --set service.VARIABLE_2=500
Также можно сделать это без использования awk
. Просто демонстрирую другой способ
while read -r env
do
[[ $env == *PREFIX_* ]] && envs+=("--set service.${env#*_}")
done < <(env)
printf '%s ' "${envs[@]}"
Итак, здесь вы читаете каждую строку, содержащую PREFIX_
, и добавляете ее к переменной массива, используя +=
. ${env#*_}
гарантирует, что т.е.:
PREFIX_VARIABLE_1=100
становится
VARIABLE_1=100
Подробнее см. Манипуляции со строками .