Geez, j'ai essayé les pages MAN, et plusieurs messages ici. Je suppose que je suis juste stupide parce que je ne l'ai pas.comment utiliser sed pour remplacer une chaîne dans un fichier avec une variable shell
J'ai un fichier javascript qui a {VERSION} et {DISTRO} où les valeurs de chaînes de variables doivent être remplacées comme ceci.
var MyObject = {
/**
* @property {string} VERSION Holds the current version of the framework
*/
VERSION: '{VERSION}',
/**
* @property {string} DISTRO Holds the distrobution tag of the framework
*/
DISTRO: '{DISTRO}'
};
Et cette commande est en cours d'exécution pour mon shell. peu importe ce que je fais ça, ça ne marche pas ou j'ai des erreurs.
VERSION="0.9.0"
DISTRO="Developer"
OUT_CAT=$OUT_CAT_DEBUG
${OUT_CAT} | sed -i "s/{VERSION}/\$VERSION/" -e "s/{DISTRO}/\$DISTRO/" ${OUT_CAT}
#sed -i "s/{VERSION}/$VERSION/" -e "s/{DISTRO}/$DISTRO/" ${OUT_CAT}
Alors, en quoi suis-je un retard? On dirait que ça devrait être très simple et direct. Voici une version démilitarisée du script afin que vous puissiez savoir ce que je fais et d'où viennent les variables.
#!/bin/bash
VERSION="0.9.0"
DEV_DIR=../lib
DIST_DIR=../dist
WEB_DIR=/d/Android_Dev/GitHUB/WEB/h5c3/dist
OUT_CAT_DEBUG=h5c3.debug.cat
OUT_MIN_DEBUG=h5c3.debug.min
OUT_ZIP_DEBUG=$DIST_DIR/h5c3.debug.gz
OUT_CAT_RELEASE=$DIST_DIR/h5c3.release.cat
OUT_MIN_RELEASE=h5c3.release.min
OUT_ZIP_RELEASE=$DIST_DIR/h5c3.release.gz
echo Building Version "$1"...
if [ "$1" == debug ]; then
DISTRO="Developer"
OUT_CAT=$OUT_CAT_DEBUG
OUT_MIN=$OUT_MIN_DEBUG
OUT_ZIP=$OUT_ZIP_DEBUG
# empty it out
> ${OUT_CAT}
cat $DEV_DIR/packed.js >> ${OUT_CAT}
#Development support
cat $DEV_DIR/h5c3_debug.js >> ${OUT_CAT}
elif [ "$1" == release ]; then
DISTRO="Production"
OUT_CAT=$OUT_CAT_RELEASE
OUT_MIN=$OUT_MIN_RELEASE
OUT_ZIP=$OUT_ZIP_RELEASE
# empty it out
> ${OUT_CAT}
cat $DEV_DIR/packed.js >> ${OUT_CAT}
cat $DEV_DIR/h5c3_release.js >> ${OUT_CAT}
else
#publish.sh debug
#publish.sh release
exit 2
fi
#Build Game Core
cat $DEV_DIR/core/stacktrace.js >> ${OUT_CAT}
#Build Externals
cat $DEV_DIR/ext/base64.js >> ${OUT_CAT}
#Build Engine
cat $DEV_DIR/engine/boot.js >> ${OUT_CAT}
#Build Internal Components
cat $DEV_DIR/components/component.js >> ${OUT_CAT}
#Build Systems
cat $DEV_DIR/systems/system.js >> ${OUT_CAT}
#Build Framework
cat $DEV_DIR/framework/page.js >> ${OUT_CAT}
#Build Web App
cat $DEV_DIR/webapp/game.js >> ${OUT_CAT}
if [ "$1" == debug ]; then
#Development support
cat $DEV_DIR/debugger/profiler.js >> ${OUT_CAT}
cat $DEV_DIR/debugger/console.js >> ${OUT_CAT}
cat $DEV_DIR/debugger/debug.js >> ${OUT_CAT}
cat $DEV_DIR/debugger/developer.js >> ${OUT_CAT}
fi
if [ "$1" == release ]; then
echo Removing any debug calls from ${OUT_CAT}
sed -i '/this.debug/d' ${OUT_CAT}
fi
echo "Inserting distribution & version in ${OUT_CAT}"
${OUT_CAT} | sed -i "s/{VERSION}/\$VERSION/" -e "s/{DISTRO}/\$DISTRO/" ${OUT_CAT}
echo Minimizing...[${OUT_CAT} to ${OUT_MIN}]
> ${OUT_MIN}
java -jar yuicompressor-2.4.7.jar ${OUT_CAT} -o ${OUT_MIN}
#echo Compressing...[${OUT_MIN} to ${OUT_ZIP}]
#gzip --best --force ${OUT_MIN}
echo Copying to WEB Folder...
cp --update ${OUT_MIN} ${WEB_DIR}
echo Complete.
exit
Cela a fonctionné parfaitement. Je n'avais pas utilisé l'évasion, mais l'ai essayé à partir d'un autre poste. Il semble que j'avais besoin du premier -e. Merci nlucaroni – NlaakALD
Ah, d'accord, je pensais que tu avais peut-être oublié ça par hasard. Vous aurez besoin de '-e' sur chaque expression lorsque plusieurs sont en cours d'exécution. À votre santé. – nlucaroni
Je m'en souviendrai. Merci encore. – NlaakALD