比较 bash 变量中的多行字符串



我有一个有两个多行字符串的脚本。我想知道它们是否相等。我还没有找到一种方法来做到这一点,因为虽然比较很容易,但将变量的值传递给比较 thingamajig 却不是。我还没有成功地通过管道将其引导到差异,但这可能是我的无能(我尝试过的许多事情都导致"文件名太长"错误)。解决方法是用一些罕见的字符替换换行符,但它遇到了大致相同的问题。有什么想法吗?

即使您

使用sh也绝对可以比较多行字符串。特别是,无需使用 md5sum 或其他类似机制对字符串进行哈希处理。

演示:

$ cat /tmp/multiline.sh
#!/bin/sh
foo='this
is
a
string'
bar='this
is not
the same
string'
    
[ "$foo" = "$foo" ]  && echo SUCCESS || echo FAILURE
[ "$foo" != "$bar" ] && echo SUCCESS || echo FAILURE
$ /tmp/multiline.sh
SUCCESS
SUCCESS

bash你可以(并且通常应该)使用[[ ... ]]而不是[ ... ],但它们仍然支持多行字符串。

这可能会有所帮助:

var=$(echo -e "thisnis nanstring" | md5sum)
var2=$(echo -e "thisnis notnanstring" | md5sum)
if [[ $var == $var2 ]] ; then echo true; else echo false; fi

bats合作,bats-assert我起诉了@dimo414的解决方案(投票给他的答案)

@test "craft a word object" {
  touch "$JSON_FILE"
  entry=$(cat <<-MOT
  {
    "key": "bonjour",
    "label": "bonjour",
    "video": "video/bonjour.webm"
  },
MOT
)
  run add_word "bonjour"
  content=$(cat $JSON_FILE)
  assert_equal "$entry" "$content"
}

相关内容

  • 没有找到相关文章

最新更新