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