У меня есть список зависимостей 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 выполнять подстановки в строке.