Использование /bin/sh
и списка позиционных параметров для хранения имен отсутствующих файлов:
set --
i=1
while [ "$i" -le 1000 ]; do
name="File.$i.exe"
[[ ! -e "$name" ]] && set -- "$@" "$name"
i=$(( i + 1 ))
done
( IFS=','; printf 'Missing files: %s\n' "$*" )
или используя bash
и массив:
missing=()
for (( i=1; i<=1000; ++i )); do
name="File.$i.exe"
[[ ! -e "$name" ]] && missing+=( "$name" )
done
( IFS=','; printf 'Missing files: %s\n' "${missing[*]}" )
При использовании "$*"
или "${missing[*]}"
массив будет преобразован в строку. Строка будет объединена с первым символом $IFS
в качестве разделителя (по умолчанию пробел ). Подоболочка устанавливает IFS
в запятую, а затем печатает массив, соединенный запятыми. Подоболочка предотвращает установку переменной IFS
в остальной части скрипта.
Код также сможет работать с именами файлов, содержащими пробелы и т. д.
Я решил остановить resolvconf
и заметил, что после перезапуска dnsmasq
в /var/run/dnsmasq/resolv.conf
записываются/используются правильные серверы имен.