仅在 bash 中检查变量是否包含数字的语法

仅在 bash 中检查变量是否包含数字的语法

我正在查看我的机器上的一些旧脚本,我看到了这个if表达式,但我不知道它在做什么。有人可以解释一下吗?

if ! [[ "${count// /}" =~ ^[0-9]+$ ]]
then
  echo 1
else
  echo $count
fi

的值count有时是字符串,有时是整数。

答案1

让我们将其分解为各个组件

  1. 该语法"${count// /}"是参数扩展语法,用空字符串替换变量内容中的所有空格。例如2 1变得只是21
  2. 该部分=~ ^[0-9]+$运行bash正则表达式操作,将左侧的字符串与一组数字进行匹配仅有的
  3. 该部分否定整个操作,这意味着仅当! [[..]]的内容为时条件才成立count不是一串数字。
  4. 如果ifecho输出 的数值,1并且失败时if,它会返回 的实际值,count而不会在 1) 中删除空格。

相关内容