Để sử dụng tệp cấu hình cho tập lệnh này, điều đó có nghĩa là tập lệnh sẽ phải đọc một số tham số từ tệp cấu hình.
Tập tin cấu hình
config.txt:
con đường =.
tiện ích mở rộng = sh
modtime=1
tên tệp = kiểm tra
Tập kịch bản:
#!/bin/bash
lines=$(<config.txt) #read config.txt
cho dòng trong $lines; làm # phân tích cú pháp từng dòng và trích xuất các khóa giá trị tham số
nếu [[ $line = *"="* ]]; sau đó # nếu một từ chứa dấu "="...
vars[${line%%=*}]=${line#*=} # sau đó đặt nó làm khóa mảng kết hợp
fi
xong
find ${vars[path]} -mtime ${vars[modtime]} -type f "(" -name "*.${vars[extension]}" -or -name "${vars[filename]}.* " ")"
Giải pháp khác là sử dụng tập lệnh có đối số và chỉ định đường dẫn, phần mở rộng, thời gian sửa đổi hoặc tên tệp như sau:
#!/bin/bash
Cứu giúp()
{
tiếng vang ""
echo "Cách sử dụng: $0 -p Đường dẫn -e tệpPhần mở rộng -m sửa đổiThời gian -f tên tệp"
echo -e "\t-path Đường dẫn tìm kiếm"
echo -e "\t-ext phần mở rộng tên tập tin"
echo -e "\t-modtime thời gian sửa đổi, ví dụ: +1d"
echo -e "\t-filename tên tệp"
thoát 1 # Thoát tập lệnh sau khi in trợ giúp
}
trong khi getopts "p:e:m:f:" opt
làm
trường hợp "$opt" trong
p ) pathFile="$OPTARG" ;;
e) tiện ích mở rộng="$OPTARG" ;;
m ) modTime="$OPTARG" ;;
f ) fileName="$OPTARG" ;;
? ) Cứu giúp ;; # In trợ giúp trong trường hợp tham số không tồn tại
thoát hiểm
xong
# In trợ giúp trong trường hợp tham số trống
nếu [ -z "$pathFile" ] || [ -z "$extension" ] || [ -z "$modifyTime" ] || [ -z "$fileName" ]
sau đó
echo "(Các) tham số trống, vui lòng kiểm tra chúng...";
Cứu giúp
fi
tìm $pathFile -mtime $modifyTime -type f "(" -name "*.$extension" -or -name "$fileName.*" ")"