Используйте тест оболочки для проверки базовой информации о файле. [дубликат]

Я просто сравниваю от конца к началу из-за разделителей

awk -F[-,] '$NF >= 20 && $NF <= 30 && $(NF-1) >= 10 && 
            $(NF-1) <= 12 && $(NF-2) >= 2014 && $(NF-2) <= 2016' yourfile
  1. NF - последнее поле, $ NF - значение, а $ (NF-1) - значение для поля перед последним и так далее
  2. $ NF день, $ (NF-1) месяц, $ (NF-2) год
1
05.07.2018, 23:18
1 ответ

Вы можете использовать тест оболочки для проверки типа файла и разрешений:

#!/bin/sh

read -rp 'Enter a filename: ' fname
if [ -f "$fname" ]; then
    echo 'File is a regular file'
elif [ -d "$fname" ]; then
    echo 'File is a directory'
else
    echo 'File is not a regular file or a directory'
fi
[ -r "$fname" ] && read=read
[ -w "$fname" ] && write=write
[ -x "$fname" ] && execute=execute

echo "User has ${read} ${write} ${execute} permissions" | tr -s ' '

Тест снаряда


Конструкция if сообщит о типе файла, проверив, является ли он обычным файлом(-f)или каталогом (-d), в противном случае она сообщит, что это не так.

Затем мы проверяем различные разрешения :чтение (-r), запись(-w)и выполнение(-x). Установка переменной для каждого. Если у пользователя нет одного из этих разрешений, соответствующая переменная останется неустановленной, поэтому в последней эхо-строке, если у пользователя нет этого разрешения, переменная будет расширена до нуля. Это завершено вызовом tr -s ' 'для удаления любых дополнительных пробелов, которые могут быть там из-за несуществующих разрешений.

1
27.01.2020, 23:43

Теги

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