gpt4 book ai didi

linux - Shell脚本双引号

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:09 26 4
gpt4 key购买 nike

我正在编写一个解析日志文件的 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")

最佳答案

我认为您的 logfilerx_value 和您要查找的数字之间有一个换行符。带有未加引号的参数扩展的 echo 命令会将换行符转换为空格。请参阅文档中的单词拆分或字段拆分。

关于linux - Shell脚本双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com