linux - 为什么我的 sed 命令在使用变量时失败?

标签 linux bash unix shell

使用 bash,我试图为日期插入一个变量并搜索该日期的日志文件,然后将输出发送到一个文件。如果我像这样硬编码日期,它就可以工作:

sed -n '/Nov 22, 2010/,$p' $file >$log_file

但是如果我这样做它会失败:

date="Nov 22, 2010"
sed -n '/$date/,$p' $file >$log_file

我得到的错误是:sed: 1: "/Nov 22, 2010/,": expected context address 感谢您的帮助。

最佳答案

在shell脚本中,单引号和双引号是有区别的。单引号内的变量展开(与双引号内的变量不同),因此您需要:

date="Nov 22, 2010"
sed -n "/$date/,\$p" $file >$log_file

反斜杠转义了应该由 shell 按字面意思获取并且对 sed 有意义的美元符号。

关于linux - 为什么我的 sed 命令在使用变量时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252280/

相关文章:

php - 如何在 Unix/Linux 中为文件夹中的所有文件添加 .xml 扩展名

linux - 运行 makefile 时替换的位置

c++ - opengl 游戏开发中的 Mono c# vs c++?

Bash 行注释续

python -/bin/sh : -c: line 0: syntax error near unexpected token `('

java - java中的getRuntime.exec()是否理解*?

java - 无法写入 Java 中的文件

Linux 命令动态将 GB 转换为 MB

php脚本访问远程linux服务器并执行bash脚本

linux - 在 bash 中使用 read 和 Expect 自动响应