繁体   English   中英

Bash:脚本中的 Diff cmd 未按预期工作

[英]Bash: Diff cmd in script not working as expected

我正在编写一个脚本来检查文件数组中的差异

#!/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 是相同的。 这些命令在单独输入时工作正常,但在脚本中输出如下: 脚本输出

您实际上并没有调用 diff:

  isDiff=(diff -y "$i" "$o")

isDiff 是一个数组,包含元素“diff”、“-y”、“$i”和“$o”

展开数组时, $isDiff${isDiff[0]} ,因此测试

  if [ -z "$isDiff" ];then

正在测试数组的第一个元素是否为空。 它不是。 这就是为什么“diff”一词出现在您的输出中的原因。

使用正确的命令替换语法:

  isDiff=$(diff -y "$i" "$o")
  # .....^^.................^

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM