J’essaie de renommer les commandes dans un script bash. Si je cours par exemple:
echo /home/scientist/mySalesData/campaignData_1482386214.24417.csv | sed 's/\(.*\)\(_.*\)/mv \"&" \"\1.csv\"/' | bash
Cela fonctionne bien et me donne campaignData.csv dans le répertoire /home/scientist/mySalesData/
.
Cependant, si je mets ceci dans un script bash comme suit:
for f in /home/scientist/SalesData/*; do if [ -f "$f" ]; cp "$f" /home/scientist/SalesForce/SalesData/Backups/ echo $f$ | sed 's/\(.*\)\(_.*\)/mv \"&" \"\1.csv\"/' | bash | fi done
Je reçois:
mv: cannot stat '/home/scientist/SalesData/campaignData_1482386214.24417.csv$': No such file or directory
Toute aide serait très appréciée!
cd "$srcdir" for f in *; do if [ -f "$f" ]; then cp "./$f" "$dstdir/${f%_*}.csv" fi done
Le %
est l’opérateur de modèle de suffixe de bande le plus court .
Vous avez un $
ici:
echo $f$
supprimer cela (et citer l’extension):
echo "$f"
Vous pouvez utiliser ici ssortingng:
sed ... <<<"$f"