В Bash:
Чтобы обеспечить выполнение исполняемого скрипта с использованием интерпретатора bash
, важно убедиться, что первые символы в скрипте #!
, а затем команда, которая будетвызвать bash
.Пример первой строки:
#!/bin/bash
Обычно расширение шаблона глоба, который ничего не соответствует, приводит к оригинальному шаблону глобинга.Это не желательно в нашем случае.Чтобы сделать несоответствующий глобус оценочным для пустого списка файлов, необходимо включить параметр nullglob
следующим образом:
shopt -s nullglob
Следующее выражение оценивает список файлов, имя которых заканчивается на.ym
, внутри каталога, $dir
:
"$dir"/*.ym
Следующее вычисляет префикс имени файла, $file
:
"${file%.*}"
И условие, которое проверяетесли файл не существует:
if [[ ! -f "${file}" ]]; then
... the file does not exist ...
fi
Объединение этих точек приводит к следующему сценарию:
#!/bin/bash
shopt -s nullglob
for file in "$dir"/*.ym; do
if [[ ! -f "${file%.*}.job" ]]; then
echo "$file"
fi
done