Лучше всего это делать с помощью ассоциативного массива. например.
declare -A array
while IFS=: read key val; do
array["$key"]="$val"
done < input.txt
for key in Total_Test_Cases_Count Total_Pass; do
printf '%s=%s\n' "$key" "${array[$key]}"
done
Выход:
Total_Test_Cases_Count=25
Total_Pass=24
Это не удастся, если какое-либо из значений содержит разделитель полей (двоеточие,:
). В этом случае вам сначала нужно изменить разделитель полей во входных данных на что-то, чего нет ни в одном из полей. Вкладка часто является хорошим выбором. Например:
while IFS=$'\t' read key val; do
array["$key"]="$val"
done < <(sed -e 's/:/\t/1' input.txt)
IFS настроен на использование табуляции в качестве разделителя, а команда sed
заменяет первый (и только первый )символ двоеточия на табуляцию.
Следующий файл таймера взят из здесь , но в основном это файл по умолчанию для многих систем. Ваша система может на самом деле включать один, он может быть ниже /lib/systemd/system/fstrim.timer
или вы можете проверить с помощьюsystemctl status fstrim.timer
fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim
[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
[Install]
WantedBy=timers.target
Это будет выполняться один раз в неделю, если вы оставите свой компьютер включенным -и немедленно, если вы пропустите последний раз (включите его снова через более чем неделю)(также см. Arch Wiki:Таймер реального времени):
When activated, it triggers the service immediately if it missed the last start time (option Persistent=true), for example due to the system being powered off