Попытайтесь иметь
MAJOR=4
MINOR=0
STATE="beta"
POINT=9
VERSION=$MAJOR.$MINOR$STATE$POINT
NEXT_VERSION=$MAJOR.$MINOR$STATE$((POINT +1 ))
echo "Next version is $NEXT_VERSION"
# other release stuff here
Действительно хотите, чтобы это было сценарием самоперезаписи? Я предложил бы что-то как
tempfile=$( tempfile -d . )
sed -re "s/POINT=[0-9]+/POINT=$(( ++POINT ))/" $0 > $tempfile
chmod +x $tempfile
mv $tempfile $0
Это может быть сделано легко с хорошей комбинацией sed и xargs.
find . -name "*.php" | xargs -n 1 echo
покажет Вам питание xargs.
После этого, на файле примера, можно протестировать regexp с оперативным изменением (-i) или резервным изменением (-i.bak). Можно также использовать другой символ для замены '/', если шаблон/замена уже имеет тот.
В конце это должно быть похожим:
pattern=`cat /path/to/pattern`; replacement=`cat /path/to/replacement`
find . -name "*.php" | xargs -n 1 sed -i -e 's|$pattern|$replacement|g'
Попытка:
find . -name "*.php" -exec sed -i "s/$pattern/$replacement/g" {} \;
где pattern
шаблон должен искать и replacement
текст должен заменить его.
-i
опция для sed
редактирует файлы "на месте". Если Вы хотите создать резервное копирование файла перед редактированием его использовать -i'.bak'
.
sed
"s/$(cat /path/to/pattern.txt)/$(cat /path/to/replacement.txt)/g"
.
– Gilles 'SO- stop being evil'
18.01.2012, 01:39
perl -p -i -e 's/originalString/targetString/g' `find . -name '*' -type f`
cat /path/to/pattern
; замена =cat /path/to/replacement
; найти. - называют "*.php" | xargs-n 1 sed-i-e "s/$pattern/$replacement/g" спасибо – Coren 17.01.2012, 12:04sed -i -e "|$pattern|$replacement|g
работы хорошо спасибо – Coren 17.01.2012, 12:15