如何在 bash 中进行字符比较?

how to do a character comparison in bash?

假设我有一列显示 2/2,我想比较分隔符的左侧(在本例中为 /)是否与右侧匹配?在 bash?

中有什么方法可以做到这一点?

一种可能的方法是使用 IFS,但这需要将值存储在变量中,然后使用 IF 语句比较它们​​。我正在尝试使用 oneliner 命令来实现此目的。

您可以使用bash expansion operators提取每个部分并直接比较。

var='2/2'
if [[ "${var%/*}" = "${var#*/}" ]]
then echo match
else echo no match
fi

${var%/*} 删除匹配通配符 /* 的变量的末尾,因此它获得第一个数字。 ${var#*/} 删除匹配通配符 */ 的变量开头,因此它得到第二个数字。

虽然您正在寻找 bash 解决方案,但 awk 选项如何:

col="2/2"
echo "$col" | awk -F/ '{print == ? "match" : "no match"}'
  • -F/ 选项将 awk 的字段分隔符设置为 /
  • 然后输入在 / 上拆分,awk 变量 </code> 分配给 左侧,而 <code> 分配给右侧。
  • 现在我们可以比较 </code> 和 <code>