如何在命令行中一行代码比较两个字符串(无需创建文件)
无需文件的一行命令验证字符串比较(含换行)
你需要比较的两个字符串核心差异在于第二个包含换行符,只需一行命令就能完成验证,无需创建临时文件:
[ "84fbe59c20f52b43125f76a9101e373f775a75b89435cdda301a63694c69c2da" = "$(echo '84fbe59c20f52b43125f76a9101e373f775a75b89435cdda30 1a63694c69c2da' | tr -d '\n')" ] && echo 1 || echo 0
命令说明:
- 用单引号包裹带换行的第二个字符串,直接通过
echo输出 tr -d '\n'移除字符串中的所有换行符,将两行内容合并为一行[ str1 = str2 ]执行字符串相等性校验- 校验通过时输出
1,不通过时输出0,满足布尔结果需求
如果使用Bash,也可以用参数替换实现,无需管道:
target_str="84fbe59c20f52b43125f76a9101e373f775a75b89435cdda301a63694c69c2da" compare_str=$'84fbe59c20f52b43125f76a9101e373f775a75b89435cdda30\n1a63694c69c2da' [[ "$target_str" == "${compare_str//$'\n'/}" ]] && echo 1 || echo 0
这里用$'...'语法让Bash识别换行转义符\n,再通过${compare_str//$'\n'/}把所有换行替换为空,最后完成比较。
内容的提问来源于stack exchange,提问作者Md. A. A. Apu
相关产品推荐
相关产品推荐

