Как использовать переменные правильно в этом небольшом сценарии?

split -l $Y main.tsv main_part_
for part in main_part_*; do
    program $part &
done
wait
echo "all done"

Подождите - это встроенный Bash: проверьте страницу человека для деталей

0
11.02.2015, 00:44
2 ответа

Прямой ответ на ваш вопрос - «использовать двойные кавычки», потому что один Цитаты предотвращают все расширения:

 right=$(echo "$wrongpath" | sed "s|$oldtargetdir|$goodtargetdir|")

нет необходимости в задней точке с запятой; Они только необходимы, когда что-то следует на той же линии (так что то, что до того, как сделано не является избыточком, хотя макет неортодоксасна, а , сделанные , обычно должны быть на линии на его своя).

Вы также можете использовать:

right="${wrongpath/$oldtargetdir/$goodtargetdir}"

, который позволяет избежать накладных расходов подпроцессов.

2
28.01.2020, 02:20

Переменные не расширяются в одиночных цитатах, но они находятся в двойных цитатах.

Более того, вам не нужно SED для такого простого замещения, вы можете использовать расширение параметров:

right=${wrongpath/$oldtargetdir/$goodtargetdir}
2
28.01.2020, 02:20

Теги

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