split -l $Y main.tsv main_part_
for part in main_part_*; do
program $part &
done
wait
echo "all done"
Подождите
- это встроенный Bash: проверьте страницу человека для деталей
Прямой ответ на ваш вопрос - «использовать двойные кавычки», потому что один Цитаты предотвращают все расширения:
right=$(echo "$wrongpath" | sed "s|$oldtargetdir|$goodtargetdir|")
нет необходимости в задней точке с запятой; Они только необходимы, когда что-то следует на той же линии (так что то, что до того, как сделано
не является избыточком, хотя макет неортодоксасна, а , сделанные
, обычно должны быть на линии на его своя).
Вы также можете использовать:
right="${wrongpath/$oldtargetdir/$goodtargetdir}"
, который позволяет избежать накладных расходов подпроцессов.
Переменные не расширяются в одиночных цитатах, но они находятся в двойных цитатах.
Более того, вам не нужно SED для такого простого замещения, вы можете использовать расширение параметров:
right=${wrongpath/$oldtargetdir/$goodtargetdir}