【发布时间】:2010-11-11 21:09:57
【问题描述】:
我正在编写一个解析日志文件的 shell 脚本。重要的部分是:
rx=$(echo "$logfile" | grep -o "rx_value.*" | grep -o "[0-9]\{1,10\}")
echo rx=$rx
以下内容打印到 STDOUT(错误):
rx=
如果我像这样从 $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")
【问题讨论】:
-
$logfile包含什么内容? -
这仍然没有回答伊格纳西奥的问题。
$logfile的内容是什么而不是“它来自哪里”?