Ах, Sed инъекции кода. Что видит sed
sed "s/TEST_CASES_R/,tests/test/,tests/test/2/g" template >> newfile
... что является бессмысленным. Корневая проблема заключается в том, что sed не может различать вещи, которые вы хотите видеть, как данные - содержимое $testCaseLocations
- и инструкции.
Лучшее решение на мой взгляд, использовать AWK:
awk -v replacement="$testCaseLocations" '{ gsub(/TEST_CASES_R/, replacement); print }' template >> newfile
, потому что это аккуратно обходит проблемы внедрения кода, не обрабатывать testCaseLocations
как код. Вы могли бы, в данном конкретном случае, а также использовать различные разделители для СЭД, такие как
sed "[email protected][email protected][email protected]" template >> newfile
, но тогда вы столкнетесь с проблемами, если $testCaseLocations
содержит @
, или если она содержит символ, который имеет значение для СЭД в контексте, где он появляется, например \
или &
.
Возможный дубликат [sed: удалить с помощью другого разделителя] (http://stackoverflow.com/questions/1797906/sed-delete-using-a-different-delimiter) – NeronLeVelu