我正在尝试比较所有文件对之间的差异。但是,为了比较文件对,我需要能够访问for循环中当前元素之后的元素。这是我目前的代码 -
#!/bin/bash
for file in $(find -type f); do
b = $(file+1) -- I know this is not the correct way to access the next element
diff $(file) $(b) >/dev/null
if [ #? -eq 0 ]
echo $(file) and $(b) are the same
else
echo $(file) and $(b) are not the same
fi
done
非常感谢任何有关访问下一个元素的方法的帮助。
答案 0 :(得分:1)
您可以访问前一个元素而不是下一个元素:存储迭代的当前文件名,并在下一个中重复使用它。类似的东西:
#!/usr/env/bin bash
declare previous=""
for file in $(find -type f); do
if [[ -n $previous ]]; then
if diff --brief "${previous}" "${file}" > /dev/null; then
echo "${previous} and ${file} are the same"
else
echo "${previous} and ${file} are not the same"
fi
fi
previous="${file}"
done
注意:如果你真的想要包含变量名,请使用花括号(如上面的代码所示),而不是括号(如代码中所示):${file}
计算为变量{{1}的值while file
在没有参数的情况下调用command $(file)
,并返回错误消息。