Добавление к локальному массиву

Обычно вы не хотите анализировать выводls.

Здесь сzsh(вы уже используете синтаксис zsh, а не bash, так как вы не заключаете свои переменные в кавычки и используете подстановку команд без отключения подстановки ), вы могли бы сделать:

dir1_file_names=(dir1/*(N:t))
dir2_file_names=(dir2/*(N:t))
for f1 f2 (${dir1_file_names:^dir2_file_names})
  printf '%s\n' "f1: $f1, f2: $f2"

zshможет зацикливаться с несколькими переменными. ${a:^b}— это оператор сжатия массива . Если в одном из массивов меньше элементов, чем в другом, это будет так, как если бы они были усечены до длины наименьшего.

См. также операторы пересечения массивов и вычитания, если речь идет о сравнении имен файлов в двух каталогах.:

file_names_in_both_dir1_and_dir2=(${dir1_file_names:*dir2_file_names})
file_names_only_in_dir1=(${dir1_file_name:|dir2_file_names})
file_names_only_in_dir2=(${dir2_file_name:|dir1_file_names})

0
26.07.2021, 16:24
0 ответов

Теги

Похожие вопросы