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]}是一样的,所以test

  if [ -z "$isDiff" ];then

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

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

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