Команда
sed -i '$a\"${WATER_NUMBER}"' file.txt
просто добавит строку "${WATER_NUMBER}"
в конец файла. Вы можете попробовать
sed -i "$ a\$WATER_NUMBER" file.txt
но это все равно добавит строку $WATER_NUMBER
. Проблема в том, что переменная WATER_NUMBER не раскрывается в сценарии sed. Чтобы передать его значение в sed, поместите его вне кавычек, как это
sed -i '$ a\'$WATER_NUMBER file.txt
Редактировать: Я вчера фактически написал свой ответ, не задумываясь о причине, по которой переменная не раскрывается. Сегодня утром я удивился, почему это так, хотя переменная в двойных кавычках, а не в одинарных. Причина на самом деле просто в совпадении, что \
из команды добавления находится перед $
из переменной, таким образом, избегая ее. Чтобы предотвратить это, вам нужно сбежать от \
. С другой стороны, обратная косая черта на самом деле не нужна, чтобы отделить a
от строки, которую вы хотите добавить, следовательно,
sed -i "$ a $WATER_NUMBER" file.txt
сделает работу.