@historydev
Редактирую файлы с непонятными расширениями

Как передать все файлы из папки для команды?

Нужно чтобы команда отработала для всех файлов в папке назначения с расширением 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
  • Вопрос задан
  • 91 просмотр
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
find etc/nginx/locations/*.locations -exec ./replace_location_port.sh -n test -v v2.2.2 -p 2222 -f {} \;
Ответ написан
@historydev Автор вопроса
Редактирую файлы с непонятными расширениями
- awk -i inplace '/location \/projects\/'"$location"'/,/}/ {if(/proxy_pass/) sub(/:[0-9]+.;/,":'"$port"';")} {print}' "$file"
+ awk -i inplace '/location \/projects\/'"$location"'/,/}/ {if(/proxy_pass/) sub(/:[0-9]+.;/,":'"$port"';")} {print}' $(ls $file)


./replace_location_port.sh -n who-am-i -v v2.50.6 -p 222 -f etc/nginx/locations/\*.locations
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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