yae*_*ael 16 grep special-characters
我编写了以下命令以将 $a 与 $b 匹配,但是当该值包含“-”时,我会收到错误消息。我怎样才能避免这种情况?
# a="-Xmx5324m"
# b="-Xmx5324m"
#
#
# echo "$a" | grep -Fxc "$b"
grep: conflicting matchers specified
Run Code Online (Sandbox Code Playgroud)
seb*_*sth 25
放置--在您的模式之前:
echo "$a" | grep -Fxc -- "$b"
Run Code Online (Sandbox Code Playgroud)
-- 为许多命令/shell 内置命令指定命令结束选项,之后剩余的参数被视为位置参数。
αғs*_*нιη 13
除了@sebasth 的好答案之外,您还可以告诉 PATTERN 并grep's -e 选择使用 PATTERN 作为模式(此处使用<<< zshhere-string 运算符而不是echo; 另请参阅printf '%s\n' "$a"可移植性)。
grep -Fxc -e "$b" <<<"$a"
Run Code Online (Sandbox Code Playgroud)
或者除了其他选项之外。
grep -Fxce "$b" <<<"$a"
Run Code Online (Sandbox Code Playgroud)
由于您的目标是字节到字节的字符串相等性比较,因此请改用该[命令。
if [ "$a" = "$b" ]
Run Code Online (Sandbox Code Playgroud)
或者,如果$acontains $b,则使用[[...]]ksh 构造:
if [[ $a == *"$b"* ]]
Run Code Online (Sandbox Code Playgroud)
或者在所有类似 Bourne 的 shell 中更便携:
case $a in
*"$b"*) ...
esac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9370 次 |
| 最近记录: |