如何解决Bash:脚本中的Diff cmd无法按预期工作
我正在编写一个脚本来检查文件数组中的差异
#!/bin/bash
declare -a arr=("file1" "file")
for i in "${arr[@]}"
do
o=("$i"".copy")
isDiff=(diff -y "$i" "$o")
if [ -z "$isDiff" ];then
echo "Files the same"
else
echo "Files different"
#the long amount of \t are just for formatting
echo -e "$i \t\t\t\t\t\t\t\t $o"
echo "$isDiff"
fi
done
file1和file1.copy以及file2和file2.copy相同。
单独输入这些命令后,它们可以正常工作,但在脚本中输入以下内容:
解决方法
您实际上不是在调用差异:
isDiff=(diff -y "$i" "$o")
isDiff是一个数组,包含元素“ diff”,“-y”,“ $ i”和“ $ o”
展开数组时,$isDiff
与${isDiff[0]}
相同,因此进行测试
if [ -z "$isDiff" ];then
正在测试数组的第一个元素是否为空。它不是。这就是为什么在输出中显示单词“ diff”的原因。
使用正确的命令替换语法:
isDiff=$(diff -y "$i" "$o")
# .....^^.................^
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。