я удивляюсь, почему я получаю длину 1, возвращаемую каждый раз, даже если $ test пуст, хотя grep ничего не может найти.
#!/bin/bash
set -Eeuo pipefail
set -x
declare -a test
test=$(echo "$outputOfOtherCommand" | grep -i '>f\+\+\+\+\+\+\+\+\+' | cut -d' ' -f2) || true
echo "${#test[@]}"
for t in $test
do
echo $t
done
Команда $ outputOfOtherCommand включает вывод команды Rsyn c. Файл test_new_file был создан только для ясности.
➜ ~ ./script.sh
.d..t...... ./
>f+++++++++ test_new_file
Number of files: 10 (reg: 9, dir: 1)
Number of created files: 1 (reg: 1)
Number of deleted files: 0
Number of regular files transferred: 1
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 280
Total bytes received: 38
Единственное, что я могу объяснить, это то, что пустая запись была создана в позиции массива 0. Но я не знаю. Может быть, вы можете мне помочь.