ユーザーが選択した場合に特定のプログラムにstartupflagsを挿入できるサブプログラム/プロセスを一覧表示する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は置き換えられません。たくさん試しましたが、うまくいきません。
提案?