3
为什么不按字面意义处理`|`?
我的问题来自如何将正则表达式存储在shell变量中,从而避免引用shell特有字符的问题?。 为什么会出现错误: $ [[ $a = a|b ]] bash: syntax error in conditional expression: unexpected token `|' bash: syntax error near `|b' 在[[ ... ]]的第二个操作数内部=,应该是一个遍历模式。 这a|b不是有效的浮动模式吗?您能否指出它违反了哪个语法规则? 下面的一些评论指出,这|被解释为管道。 然后将=glob模式更改=~为regex模式进行 |工作 $ [[ $a =~ a|b ]] 我学会了从学习猛砸在P180 我以前的帖子是|在解释之初确认为管道,(其中包括解析例子中的条件表达式)解释的任何其他步骤之前也。那么,如何|在使用时将其识别为regex运算符=~,而又在使用时如何将 其识别为无效使用的管道=?这让我认为第1部分中的语法错误并不意味着将|其解释为管道。 Shell从标准输入或脚本读取的每一行都称为管道。它包含一个或多个用零个或多个管道字符(|)分隔的命令。对于读取的每个管道,shell会将其分解为命令,为管道设置I / O,然后对每个命令执行以下操作(图7-1): 谢谢。
13
bash