Не знаю, правильный ли это подход, но я использовал 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.
Поскольку у вас уже есть шаблоны имен файлов, вы знаете, что один из них -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
Это должно работать, если у вас есть только два файла с каждым префиксом в имени файла:
htmldiff prefix-*.html -o prefix-diff.html