我有一个 bash 脚本,其中列出了子程序/进程,如果用户选择,可以将启动标志插入特定程序。我想匹配以下格式的字符串,并且根据用户选择的 pgm,我想用 {PGMPATH}/pgm 前面的新标志插入/替换字符串。现有程序根据以下内容列在启动文件中:
start -existingFlag ${PGMPATH}/pgm
start -existingFlag -anotherExistingFlag ${PGMPATH}/anotherPgm
start -existingFlag -anotherFlag ${PGMPATH}/yetAnotherPgm otherStuff
但首先我尝试匹配硬编码字符串(将来会匹配启动文件中的行):
start -existingFlag ${PGMPATH}\/pgm*
并将其替换为如下所示的新行:
*start -existingFlag -newFlag ${PGMPATH}\/pgm*
从脚本:
existingString="start -existingFlag ${PGMPATH}\/pgm"
newString="start -existingFlag -newFlag ${PGMPATH}\/pgm"
sed 's/$replaceString/$newString/g' $STARTUPCONFFILE
只要字符串中没有“$”(就在 {PGMPATH} 之前),它就可以工作(字符串被替换),但只要我在 ${PGMPATH} 中添加“$”,SED 就不会替换。我已经尝试了很多,但我无法让它工作。
建议?