尝试运行银色搜索器时出现Bash语法错误

时间:2018-02-01 21:23:37

标签: regex bash ag

我正在尝试查找$未跟随!的实例。

除非$\\$需要,否则必须[^!]转义,[^\\!][转义,]除外ag "\\$[^\!]" bash: ^\!: syntax error: operand expected (error token is "^\!") ag "\\$[^!]" bash: !]: event not found ag "\\$[^\\!]" bash: ^\\!: syntax error: operand expected (error token is "^\\!") ag "\\$[\\^\\!]" bash: \\^\\!: syntax error: operand expected (error token is "\\^\\!") ag "\\$[\^\!]" bash: \^\!: syntax error: operand expected (error token is "\^\!") 也被逃脱了?不确定这一点 - 还不太了解bash。

ag "\\$\\[\\^\\!\\]"
ag "\\$\\[\\^\\!\\]"
ag "\\$\[\\^\\!\]"
ag "\\$\[\^\!\]"
ag "\$\[\^\!\]"
ag "\\$\[\^\!\]"

这些没有结果:

 <label>Age From: </label>
<input type="text" ng-model="fromAge">
<label>Age To: </label>
<input type="text" ng-model="toAge">

<ul ng-repeat="item in data | filter: filterAge">
  <li>
    {{item.age}}
  </li>
</ul>

1 个答案:

答案 0 :(得分:5)

如有疑问,请使用单引号和字符类。

ag '[$][^!]'
  • 单引号阻止!被视为历史扩展字符(bash用shell历史记录替换命令的指令)。
  • 单引号可防止反斜杠被解释为转义序列的一部分,确保它们按字面意思通过。
  • [$]\$更清晰:如果我们 在不同类型的引用上下文中,\可能会被该上下文消费;方括号不太容易被误解。 (如果有一个名为$的文件并且我们处于一个完全没有引用的上下文中,那么它可以被视为一个glob表达式......但是这个问题要小得多。与反斜杠案有关。)

另外,考虑到你并非瞄准手指与20世纪70年代和80年代的贝壳兼容,考虑在~/.bashrc中加入以下内容,使!字符不再特殊(在仅限交互式shell,使其行为偏离脚本):

set +H