пакетное сравнение файлов с общим префиксом с помощью htmldiff

Не знаю, правильный ли это подход, но я использовал screen для запуска скрипта
screen — это виртуальный терминал для запуска процесса в bg

for id in 1 2 3
do
screen -d -m bash script1.sh $id
done
wait
echo "running script2..."
bash script2.sh

экран -d -m запустит скрипт и закроет экран после завершения скрипта.
Я не могу получить вывод script1 в стандартном выводе при использовании экрана, поэтому я использовал файл для хранения вывода script1.

1
21.06.2021, 17:28
2 ответа

Поскольку у вас уже есть шаблоны имен файлов, вы знаете, что один из них -a-, а другой — -b-, и если предположить, что у вас есть только пары файлов, как показано,вы можете использовать это:

$ for file in *-a-*; do 
    prefix=${file%%-*}
    htmldiff -a "$prefix"-a-* -b "$prefix"-b-* -o "$prefix"-diff.html
 done

Синтаксис ${var%%pattern}удалит самое длинное совпадение patternс конца значения переменной. Здесь используется шаблон -*, поэтому он удалит все с первого -до конца, оставив вам префикс.

Обратите внимание, что согласно странице GitHub из htmldiff, параметр -bотсутствует, а параметр -aравен :

.

-a --accurate-mode Use accurate mode instead of risky mode

Итак, я подозреваю, что команда, которую вы на самом деле хотите, это:

$ for file in *-a-*; do 
    prefix=${file%%-*}
    htmldiff -a "$prefix"-a-* "$prefix"-b-* -o "$prefix"-diff.html
 done

Или:

$ for file in *-a-*; do 
    prefix=${file%%-*}
    htmldiff "$prefix"-a-* "$prefix"-b-* -o "$prefix"-diff.html
 done
2
28.07.2021, 11:23

Это должно работать, если у вас есть только два файла с каждым префиксом в имени файла:

htmldiff prefix-*.html -o prefix-diff.html
0
28.07.2021, 11:23

Теги

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