协慌网

登录 贡献 社区

如何比较 Bash 中的字符串

如何将变量与字符串进行比较(如果匹配则执行某些操作)?

答案

在 if 语句中使用变量

if [ "$x" = "valid" ]; then
  echo "x has the value 'valid'"
fi

如果你想要做的事时,他们不匹配,更换=!= 。您可以在各自的文档中阅读有关字符串操作算术运算的更多信息。

为什么我们在$x附近使用报价?

你想要$x左右的引号,因为如果它是空的,你的 bash 脚本会遇到语法错误,如下所示:

if [ = "valid" ]; then

非标准使用==运算符

请注意, bash允许==[等式] 使用,但这不是标准的

使用第一种情况,其中$x周围的引号是可选的:

if [[ "$x" == "valid" ]]; then

或使用第二种情况:

if [ "$x" = "valid" ]; then

或者,如果您不需要 else 子句:

[ "$x" == "valid" ] && echo "x has the value 'valid'"

要使用通配符比较字符串

if [[ "$stringA" == *$stringB* ]]; then
  # Do something here
else
  # Do Something here
fi