我在bash脚本中寻找像diff这样的东西,但是我可以检查文件内容是否与特定字符串完全匹配,而不是检查两个文件是否相等。如果文件中还有其他内容,我不希望它是真的,而是需要完全匹配。最好的方法是什么?
示例:
字符串是:" Hello World" 包含" Hello World"的文件没有其他任何东西可以满足,但其中包含" Hello World,Hello World"不会因为它比我想要完全匹配的字符串长。
答案 0 :(得分:2)
如果您不需要对差异进行核算,您仍然可以使用diff
(或cmp
。您需要做的就是创建或“伪造”包含您要与之比较的字符串的文件。有几种方法可以做到这一点:
使用diff
指定的“here string”将字符串发送到标准输入的cmp
或<<<
,并使用-
作为参数让该程序知道应该从stdin读取:
$ cmp filename - <<<"Hello World"
(请注意,以这种方式传递的“Hello World”没有尾随换行符,与下面的其他一些建议不同)
对于可能包含换行符的较长字符串,除了使用<<
$ cmp filename - <<EOF
Hello World
and here is another line
EOF
(注意EOF
可以是任何东西,只要确保它在开头和结尾都是一样的)
将字符串写入临时文件并将其用作比较
$ TMPFILE=$(mktemp)
$ echo "Hello World" > "$TMPFILE"
$ cmp filename "$TMPFILE"
$ rm "$TMPFILE"
将字符串传递给比较程序的标准输入
$ echo "Hello World" | cmp filename -
创建一个“假”文件,使用进程替换
为比较程序提供所需的文本$ cmp filename <(echo "Hello World")