我有2个变量,每个变量都包含6个值,我很难弄清楚如何比较这些值。在搜索之后,我甚至不确定如何检查他们的类型是否诚实。
这是其中一项功能:
localfiles="$(ls -l string_matching_pattern_* | awk '{print $5}')"
#Matches to the string_matching_pattern and then assigns their file sizes to the variable localfiles
echo "$localfiles"
10
123
4873
8734
2109
第二个功能基本上是相同的,但是从AWS S3存储桶中获取文件大小:
aws s3 ls s3://bucket/folder1 | awk '{print $3}'
s3files="$(aws s3 ls s3://bucket/folder1 | awk '{print $3}')"
echo "$s3files"
10
123
4873
8734
1111
基本上,如何比较这些输出或localfiles
到s3files
答案 0 :(得分:3)
下式给出:
git checkout featureBranch && git merge master
你可以做到
$ localfiles="10
123
4873
8734
2109"
$ s3files="10
123
4873
8734
1111"
或
$ paste -d"-" <(echo "$localfiles") <(echo "$s3files") | bc
0
0
0
0
998
使用数组:
$ while read -u3 localsize; read -u4 s3size; do
echo $((localsize - s3size))
done 3<<<"$localfiles" 4<<<"$s3files"
0
0
0
0
998
答案 1 :(得分:0)
将值保存到数组而不是变量,这样可以使您的值更容易比较:
local_sizes=()
s3_sizes=()
for i in $(ls -l string_matching_pattern_* |awk '{print $5}')
do
local_sizes+=($i)
done
for i in $(aws s3 ls s3://bucket/folder1 | awk '{print $3}')
do
s3_sizes+=($i)
done
printf '%s\n' "${local_sizes[@]}"
printf '%s\n' "${s3_sizes[@]}"