我想将diff
命令的输出存储到数组中,并使用 Bash 脚本查找数组的长度。我试过了,但没有成功:
arr=( $(diff -w file1 file2 | grep '<' | awk '{print $10}') )
arr=( $(diff -w file1 file2 | grep '>' | awk '{print $10}') )
echo "$arr"
echo "number of files : ${#arr[@]}"
答案1
从您的描述来看,您根本不需要数组。数组的长度等于单词数。有一个命令可以做到这一点:wc
“word count”。
但是,看看这些命令:
arr=( $(diff -w file1 file2 | grep '<' | awk '{print $10}') ) arr=( $(diff -w file1 file2 | grep '>' | awk '{print $10}') ) echo "number of files : ${#arr[@]}"
我猜你真正想要的是:从以<
或开头的行中提取第 10 列>
:
files=($(diff -w file1 file2 | awk '/^[<>]/ {print $10}') )
更好的方法是使用readarray
/mapfile
来避免子 shell(感谢@kos提示):
readarray files < <(diff -w file1 file2 | awk '/^[<>]/ {print $10}')