J'utilisais un script BASH rapide et sale pour automatiser un processus de partitionnement CF.
Cela a bien fonctionné jusqu'à ce que je voulais ajouter à cela.Bash EOF a un comportement inattendu
Fondamentalement, j'ai un script qui partitionne un compact flash en tant que tel:
CMD=.fdisk
DEV=/dev/sdc
echo "Calculating partition sizes..."
P1SIZE=+1100M
P2SIZE=+1200M
echo "Creating instruction file..."
PT1="n p 1\n $P1SIZE"
PT2="n p 2\n $P2SIZE"
END="a 1 w EOF\n"
[ -e $CMD ] && rm -rf $CMD
for i in $PT1 $PT2 $END; do echo -e $i >> $CMD; done
echo "Creating partitions..."
fdisk $DEV << EOF < $CMD
[ -e $CMD ] && rm -f $CMD
L'idée est que dans l'avenir le fichier représenté par « CMD $ » sera créé automatiquement par un outil externe avec le bonnes valeurs de début et de fin. En ce moment, j'accepte simplement le démarrage par défaut et fournissons une taille.
Cela a fonctionné assez bien jusqu'à ce que je voulais incorporer quelques étapes supplémentaires à mon script. Mais j'ai eu des problèmes quand j'ai remarqué des comportements étranges.
La première est que si j'ajouter le code ci-dessus dans une fonction, je vais continuer à obtenir une erreur de script:
line XX: syntax error: unexpected end of file
De plus, je réalise que tout code supplémentaire après la commande fdisk ne sera pas exécuté et le script semble simplement se terminer (sans erreurs, $? = 0).
Est-ce que quelqu'un sait pourquoi la fonction ne fonctionne pas et le script se termine?
Les downvoters de Drive-by sont une nuisance, mais ils se produisent; mieux s'y habituer. Si vous pensez que vous êtes attaqué (beaucoup de downvotes), contactez l'équipe ou demandez sur Meta. Et ils peuvent être un perdant, et ils peuvent être plus lâches avec leurs downvotes que vous le souhaitez, mais vous feriez mieux de les ignorer. (Triste, mais tellement.) –