Использование конфигурационного файла для этого скрипта подразумевает, что скрипт должен будет прочитать некоторый параметр из конфигурационного файла.
Файл конфигурации
конфиг.txt:
путь=.
расширение = ш
модтайм=1
имя файла=тест
Файл сценария:
#!/бин/баш
строки=$(<config.txt) #читать config.txt
для строки в $lines; do # анализировать каждую строку и извлекать ключи значения параметра
если [[ $line = *"="* ]]; затем # если слово содержит "="...
vars[${line%%=*}]=${line#*=} # затем установите его как ключ ассоциативного массива
фи
сделано
find ${vars[path]} -mtime ${vars[modtime]} -type f "(" -name "*.${vars[extension]}" -or -name "${vars[filename]}.* "")"
Другое решение — использовать скрипт с аргументами и указать путь, расширение, время модификации или имя файла следующим образом:
#!/бин/баш
помощь()
{
эхо ""
echo "Использование: $0 -p Путь -e Расширение файла -m Время модификации -f Имя файла"
echo -e "\t-path Путь, где искать"
echo -e "\t-ext расширение имени файла"
echo -e "\t-modtime время модификации, например, +1d"
echo -e "\t-filename имя файла"
exit 1 # Выход из скрипта после печати справки
}
в то время как getopts "p:e:m:f:" opt
делать
случай "$opt" в
р) pathFile="$OPTARG" ;;
д) расширение="$OPTARG" ;;
м )modifyTime="$OPTARG" ;;
е) имя_файла="$OPTARG" ;;
? ) помощь ;; # Вывести справку, если параметр не существует
эсак
сделано
# Вывести справку, если параметры пусты
если [ -z "$pathFile" ] || [ -z "$расширение" ] || [ -z "$modifyTime" ] || [-z "$имя_файла" ]
тогда
echo "Пустые параметры, проверьте их...";
помощь
фи
find $pathFile -mtime $modifyTime -type f "(" -name "*.$extension" -or -name "$fileName.*" ")"