shell 脚本中的数组

shell 脚本中的数组

我想将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}')

相关内容