如果 \$var 不是 \!

如果 \$var 不是 \!

我有一个脚本,当前产生如下结果:

...
Processing !
Processing $6$vxVOJhOX$U2flG.WASP1fEsqNy1Q0S9YROgdNJi9TTC8Gn74Al4w03unxr4qtHeaeRl8sWsGLG4Om5WbUJVsqNaCD4t4tG.
Processing !
Processing $6$ehmLTmoj$VP72RBNibmjwngQxMrW0kiyax/wJHiV0ugv/8J2RJnCwNxTIBLGJ.A4t5ryZv6lQTyheoA6N0VianZC5QI7Rp1
Processing !
Processing !
...

我想仅使用 . 过滤掉条目!

我正在尝试以下操作,无论是否转义\!

while read -r line ; do
  if ! [ \$line = \! ]; then
    echo "Processing $line"
  fi
done

如何检查变量是否包含单个!

答案1

  1. 您的示例输出行中有更多文本(“处理”),并且
  2. 您转义了美元符号\$line,防止变量扩展。

尝试:

while read -r line; do 
  if ! [ "$line" = "Processing !" ]; then 
    echo processing line "$line"; 
  fi
done

或者,如果您的输入是假如通过示例脚本,然后$line比较\!

while read -r line; do 
  if ! [ "$line" = \! ]; then 
    echo processing line "$line"; 
  fi
done

或者也许更直接:

while read -r line; do 
  if [ "$line" != \! ]; then 
    echo processing line "$line"; 
  fi
done

相关内容