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")
# .....^^.................^
我正在编写一个脚本来检查一组文件中的差异
#!/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")
# .....^^.................^