Как итерировать команду с двумя разными переменными?

Вы сравниваете размеры каталогов в двух разных операционных системах с двумя разными файловыми системами. Нет причин ожидать, что они будут одинаковыми.

Ваш реальный вопрос заключается в том, как проверить, что данные на диске 1 идентичны данным на диске 2. Лучший инструмент, который я нашел для этого, называется hashdeep. Уже более 12 лет это мой любимый инструмент для проверки целостности файлов.

Исполняемые файлы и исходный код Windows доступны здесь.

Для MacOS X, если вы не хотите компилировать собственную копию, вы можете получить ее в проекте Fink. Извините, что не разместил ссылку, но я здесь новенький и у меня нет необходимых 10 очков репутации, чтобы опубликовать более двух ссылок. Fink можно найти на www finkproject com

. Этот инструмент работает следующим образом: вы создаете список хэшей файлов из источника, а затем используете полученные хэши для проверки совпадения скопированных файлов. Это действительно просто, но вы сможете найти несколько инструкций и видео через Google.

1
19.09.2017, 23:52
2 ответа

Как насчет этого:

arr1=(abc def)
arr2=(10 20)

А потом:

for (( i=0; i<${#arr1[@]}; i++ )); do echo "${arr1[i]} ${arr2[i]}"; done
abc 10
def 20

В вашем случае оператор echo будет выглядеть так:

for (( i=0; i<${#arr1[@]}; i++ )); do 
    echo "command option option ${arr1[i]} option ${arr2[i]}"
done
command option option abc option 10
command option option def option 20

См. здесь примеры цикла for в стиле C в bash.

4
27.01.2020, 23:14

Сzsh:

проще
$ a=(a b c) b=(1 2 3)
$ for i j (${a:^b}) echo "i: $i, j: $j"
i: a, j: 1
i: b, j: 2
i: c, j: 3

${a:^b}— оператор сжатия массива -(расширяется до a, 1, b, 2, c, 3выше ).

Если вы хотите зациклить слова, полученные в результате применения оператора split+glob к $VAR1и $VAR2в POSIX -подобной оболочке (, такой как busybox sh, вы, похоже, используете в соответствии с комментарии к ответу @maulinglawns ), вы можете использовать позиционные параметры.

VAR1='a b c'
VAR2='1 2 3'
set -- $VAR1
for j in $VAR2; do
  echo "i: $1, j: $j"
  shift
done
3
27.01.2020, 23:14

Теги

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