История изменений
Исправление muon, (текущая версия) :
В моей жизни pwsh делает задачи не характерные для линукса, поэтому они для сравнения годятся плохо.
Посмотрел ЛОР по тегу «bash», нашёл вот этого беднягу: bash скрипт цикл с условием
Его вариант:
#!/bin/bash
# определяем самую раннюю дату в файле myfile
EARLIEST_DATE=`cat /root/myfile |awk '{print $1}' |sort |head -n 5 |tail -n 1`
# отфильтровываем все строки с этой самой ранней датой из файла myfile и выбираем только столбец с размером
FILTER_STRINGS=`cat /root/myfile |grep $EARLIEST_DATE |awk '{print $3}' > $TMP_SIZE`
# суммируем размер за нашу дату
SUMMARY_SIZE=`cat $TMP_SIZE| awk '{s += $1} END {print s}'`
# проверяем, больше требуемого размера наш суммарный размер по столбцу Размер или нет
if [[ $SUMMARY_SIZE -gt 10000 ]]; then
echo "Размер больше 10000"
else
Мой вариант:
$limit = 10000
$content = Get-Content tmp\myfile | ConvertFrom-CSV -Delimiter " " | sort Date
$sum = $content | where {$_.Date -like $content.date[0]} `
| Measure-Object -Sum -Property Value | select -ExpandProperty Sum
if ($sum -gt $limit) {
echo "Размер больше $limit"
} else {
...
}
Плюсы разной степени очевидности:
- Код читаемый даже с базовыми знаниями английского. Недоумение может вызвать разве что
select -ExpandProperty
. - Меньше пайпов, переменных и обращений к ФС.
- Не надо знать самобытный синтаксис подкоманд или оператора сравнения (в pwsh всегда
(...)
). - Конструкция
Get-Something ... | where {$_.Property -op ...} | select Prop1,Prop2
с минимальными изменениями годится для 90% pwsh-скриптов. - При изменении входных условий скрипт требует минимальных доработок. Что делать в bash при смене формата дат?
Исходная версия muon, :
В моей жизни pwsh делает задачи не характерные для линукса, поэтому они для сравнения годятся плохо.
Посмотрел ЛОР по тегу «bash», нашёл вот этого беднягу: bash скрипт цикл с условием
Его вариант:
#!/bin/bash
# определяем самую раннюю дату в файле myfile
EARLIEST_DATE=`cat /root/myfile |awk '{print $1}' |sort |head -n 5 |tail -n 1`
# отфильтровываем все строки с этой самой ранней датой из файла myfile и выбираем только столбец с размером
FILTER_STRINGS=`cat /root/myfile |grep $EARLIEST_DATE |awk '{print $3}' > $TMP_SIZE`
# суммируем размер за нашу дату
SUMMARY_SIZE=`cat $TMP_SIZE| awk '{s += $1} END {print s}'`
# проверяем, больше требуемого размера наш суммарный размер по столбцу Размер или нет
if [[ $SUMMARY_SIZE -gt 10000 ]]; then
echo "Размер больше 10000"
else
Мой вариант:
$limit = 10000
$content = Get-Content tmp\myfile | ConvertFrom-CSV -Delimiter " " | sort Date
$sum = $content | where {$_.Date -like $content.date[0]} `
| Measure-Object -Sum -Property Value | select -ExpandProperty Sum
if ($sum -gt $limit) {
echo "Размер больше $limit"
} else {
...
}
Плюсы разной степени очевидности:
- Код читаемый даже с назовыми знаниями английского. Недоумение может вызвать разве что
select -ExpandProperty
. - Меньше пайпов, переменных и обращений к ФС.
- Не надо знать самобытный синтаксис подкоманд или оператора сравнения (в pwsh всегда
(...)
). - Конструкция
Get-Something ... | where {$_.Property -op ...} | select Prop1,Prop2
с минимальными изменениями годится для 90% pwsh-скриптов. - При изменении входных условий скрипт требует минимальных доработок. Что делать в bash при смене формата дат?