Нужно чтобы команда отработала для всех файлов в папке назначения с расширением
etc/nginx/locations/*.locations
./replace_location_port.sh -n test -v v2.2.2 -p 2222 -f etc/nginx/locations/*.locations
while getopts n:v:p:f: flag
do
case "${flag}" in
n) name=${OPTARG};;
v) version=${OPTARG};;
p) port=${OPTARG};;
f) file=${OPTARG};;
esac
done
if [[ -z $name || -z $version || -z $port || -z $file ]]; then
echo "Required params not passed: -n: $name -v: $version -p: $port -f: $file"
exit
fi
echo "$file" # Здесь выводит первый файл из папки
location="$name\/$version"
awk -i inplace '/location \/projects\/'"$location"'/,/}/ {if(/proxy_pass/) sub(/:[0-9]+.;/,":'"$port"';")} {print}' "$file" # Команда применяется только к нему
P.S: можно так, если варианта проще нет:
search_dir=./etc/nginx/locations
for entry in "$search_dir"/*.locations
do
echo "$entry"
done