Проверка недействительной даты в bash скрипте

Если файл, который вы читаете, никогда не может быть пользовательским, вы можете злоупотребить встроенной программой read:

f=file.tsv
read $(head -n1 "$f") extra <<<`seq 100`
awk "{print \$$id, \$$age}" "$f"

Вся первая строка входного файла подставляется в список аргументов, поэтому read передаются все имена полей из строки заголовка в качестве имен переменных. Первой из них присваивается 1, которую генерирует seq 100, второй - 2, третьей - 3 и так далее. Избыточный выход seq поглощается фиктивной переменной extra. Если вы заранее знаете количество входных столбцов, вы можете изменить 100 на соответствующее и избавиться от extra.

Сценарий awk представляет собой строку с двойными кавычками, что позволяет подставлять в сценарий переменные оболочки, определенные read, в виде номеров полей awk.

1
12.03.2019, 16:06
1 ответ

Если дата всегда предоставляется в этом формате :'2019 -05 -03', это, вероятно, будет работать всегда:

#!/bin/sh -

if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
     echo 'This date is valid'
fi
3
27.01.2020, 23:30

Теги

Похожие вопросы