Я пишу сценарий оболочки, который анализирует файл журнала.Важной частью является следующее:
rx=$(echo "$logfile" | grep -o "rx_value.*" | grep -o "[0-9]\{1,10\}")
echo rx=$rx
В STDOUT (WRONG) выводится следующее:
rx=
Если я удаляю двойные qoutes из $ logfile, как это:
rx=$(echo $logfile | grep -o "rx_value.*" | grep -o "[0-9]\{1,10\}")
echo rx=$rx
Следующее выводится в STDOUT (ПРАВИЛЬНО):
rx=0
Я был уверен, что было бы хорошо использовать двойные кавычки вокруг переменных, поэтому я использовал их для всех переменных вмой сценарийИнформация, которую я нашел до сих пор, говорит о том, что если не ставить двойные кавычки вокруг переменных, результат может стать неправильным из-за разбиения слов, смещений и т. Д.
Может кто-нибудь объяснить, что здесь происходит?
Редактировать:
$ logfile содержит файл журнала, загруженный с помощью wget:
$logfile=(wget -q -O -"http://www.example.com")