[英]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.