LINUX.ORG.RU

История изменений

Исправление 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 при смене формата дат?