Моя цель - заменить все «специальные» строки из текстового файла и заменить их системными переменными. Например, как вход будет линия, как это:Замените часть строки расширением переменной оболочки
__HOME__/properties/common/file.properties
Здесь специальная строка __HOME__ и я должен заменить его HOME системной переменной $. Как выход он должен быть:
/home/user/properties/common/file.properties
Я пытался решить эту проблему с sed
командой, и я пришел к этой точке:
echo __HOME__/properties/common/file.properties | sed -e 's/\(__\)\([A-Z]*\)\(__\)/\2/g'
Как выход я получаю HOME/properties/common/file.properties
что неправильно. Я пытался заменить обратную ссылку от sed
(здесь \2
) с чем-то вроде echo \2
, но это не сработает. Есть ли что-нибудь, что можно сделать в Баше?
Я правильно понимаю, что вы хотите написать общий код, который может заменить любую переменную? Я не уверен, сможет ли это сделать. Его можно запрограммировать в Bash с некоторыми усилиями и, вероятно, намного чище на более мощном языке, таком как Python. По соображениям безопасности я бы рекомендовал вам явно перечислять переменные, которые могут быть расширены в любом случае. – 5gon12eder