Итерация по файлу с bash не работает должным образом - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть список зависимостей gradle, которые я хочу использовать для сравнения двух файлов, чтобы увидеть, как они различаются для каждого элемента в списке. Содержимое сценария выглядит следующим образом:

───────┬───────────────────────────────────────────────────────────────────────
       │ File: list_of_dependencies
───────┼───────────────────────────────────────────────────────────────────────
   1   │ :cdp:aggregatedheader:aggregatedheader-common
   2   │ :agility-ris-server:server:com.ris.server.queue.mgmt
   3   │ :agility-ris-server:common:com.ris.common
...
  77   │ org.slf4j:slf4j-log4j12:1.7.2
  78   │ org.slf4j:slf4j-api
  79   │ org.xmlunit:xmlunit-core:2.5.1
───────┴───────────────────────────────────────────────────────────────────────

Итак, я написал этот сценарий для перебора списка:

#!/usr/bin/env bash

dependency_list=$1

file_1=$2

file_2=$3

# Read in default values
while read -r dependency
do
  echo "dependency = '$dependency'"

  echo "${file_1}:"
  grep "'${dependency}'" "${file_1}"

  echo "${file_2}:"
  grep "${dependency}" "${file_2}"

  exit 0

done < "${dependency_list}"

Который я бы назвал используя:

./compare_dependencies.sh list_of_dependencies build.gradle build.gradle.backup

Вывод выглядит следующим образом:

$ compare_dependencies.sh list_of_dependencies build.gradle build.gradle.backup
'ependency = ':cdp:aggregatedheader:aggregatedheader-common
build.gradle:
build.gradle.backup:

Как вы можете видеть, когда зависимость печатается, добавляется ' в начале строки. Я предполагаю, что это из-за того, что : все испортило. Как я могу передать его как литерал, а не позволять bash выполнять подстановки в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...