我有一个bash脚本中的变量$data
和变量$file
:
data=$(echo "$(printf '%s\n' "${array[@]/%/$'\n\n'}")")
file=$(<scriptfile_results)
这些变量将包含文本。如何比较这两个变量?一种选项是使用 diff(1) 实用程序,例如:
diff -u <(echo "$data") <(echo "$file")
这是比较两个变量内容的正确而优雅的方式吗?此外,<( )
技术被称为什么?据我所知,每个 <( )
都会创建一个临时文件(命名管道)。
echo foo > foo; cat foo; rm foo
,也不太可能接触到磁盘。如果在虚拟文件系统刷新到物理分区之前删除了临时文件,则永远不会写入硬盘。 - William Pursell-e
在这里并没有帮助,因为它会使字面字符串foo\tbar
和foo bar
相等,尽管它们是不同长度的不同字符串。你有什么例子吗? - andrewdotnfoo="bar
,然后在第2行,baz"
。 - andrewdotn