2010-04-15 24 views
1

J'utilise busybox shell pour exécuter un script que bash exécute quand je démarre Linux en utilisant le nfs. S'il vous plaît laissez-moi savoir la bonne alternative pour cette ligne.busybox shell refuse d'exécuter la ligne de script particulière

cur_major=$((0x`stat -c %t $dev 2>/dev/null`)) 

Le busybox lancers francs dans une erreur disant erreur de syntaxe « 0x », que je comprends est le problème avec la syntaxe de cette ligne.

Merci à l'avance

Répondre

0

Je n'ai pas un problème de l'exécuter. essayez de le faire étape par étape si tout le reste échoue.

$ var=$(stat -c "%t" $dev 2>/dev/null) 
$ var=$((0x$var)) 

fait $(()) vous permet d'effectuer l'arithmétique. qu'est-ce que vous essayez réellement de faire? essayez-vous de convertir en un nombre hexadécimal?

+0

Salut, Merci pour une réponse très rapide. J'ai essayé ceci aussi, mais le shell busybox est incapable d'interpréter 0x. Il donne toujours une erreur de syntaxe. J'essaie un module de chargement en utilisant ce script basé sur la sortie de cette ligne. Le script fait une comparaison sur sa sortie et fait mknod. Je suis coincé ici car il y a environ 50 insmod à faire et 50 mknod, ce qui est très encombrant s'il est fait manuellement. – neil1234

1
major_hex=`stat -c %t $dev 2>/dev/null` 
cur_major=`printf "%2d" 0x"$major_hex"` 
+0

Bonjour Peter, Merci d'avoir répondu à cette question. Dans busybox je n'ai pas trouvé le support de la commande bc. Comme tous mes pilotes sont des modules de caractères, je ne peux pas faire de cat/proc/partitions pour avoir des informations sur eux. J'ai besoin de trouver un moyen d'avoir un nombre majeur en décimal. Je poste ce commentaire la 3ème fois, car je ne sais pas pourquoi il n'est pas ajouté. – neil1234