Как сохранить число в переменной, а затем вывести это значение? - PullRequest
0 голосов
/ 20 января 2019

Я хочу использовать grep для подсчета количества W вхождений в file.txt, сохранить его как переменную WATER_NUMBER.Затем добавьте это число к концу file.txt.

После здесь ,

Я пытался

#!/bin/bash -l
WATER_NUMBER="$(grep -c W file.txt)"
sed -i -e '$a\"${WATER_NUMBER}"' file.txt

, но получил "${WATER_NUMBER}"распечатан вместо номера.Могу ли я спросить, как его изменить?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Как сохранить число в переменной?

WATER_NUMBER=42

Как добавить содержимое переменной в файл?

echo $WATER_NUMBER >> file.txt
0 голосов
/ 21 января 2019

Команда

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

сделает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...