Deux exemples de shell très détaillés code_other

2019-12-27
Deux exemples de shell très détaillés
Étapes générales de programmation
Voyons maintenant les étapes générales de l'écriture d'un script. Tout bon script doit avoir de l'aide et des paramètres d'entrée. Et l'écriture d'un pseudo-script (framework.sh), qui contient la structure de framework requise par la plupart des scripts, est une très bonne idée. Pour le moment, lors de l'écriture d'un nouveau script, il suffit d'exécuter la commande copy:
cp framework.sh myscript
Puis insérez votre propre fonction.
Regardons deux autres exemples:
Conversion binaire en décimal
Le script b2d convertit un nombre binaire (tel que 1101) en nombre décimal correspondant. Ceci est un exemple à l'aide d'une commande opération mathématique expr:

copier le code est la suivante :!
# / bin / sh
# vim: set sw = 4 ts = 4 et:
help ()
{
cat USAGE: b2h [-h] binarynum
OPTIONS: -h texte d'aide
EXEMPLE: b2h 111010
renverra 58
HELP
exit 0
}
error ()
{
# print une erreur et quitte
echo "$ 1"
exit 1
}
lastchar ()
{
# retourne le dernier caractère d'une chaîne dans $ rval
si [- z "$ 1"]; puis
# chaîne vide
rval = ""
return
fi
# wc met un peu d'espace derrière la sortie c'est pourquoi nous avons besoin de sed:
numofchar = `echo -n" $ 1 "| wc -c | sed 's / // g'`
# maintenant couper le dernier caractère
rval =` echo -n "$ 1" | cut -b $ numofchar `
}
chop ()
{
# supprime le dernier caractère de la chaîne et le renvoie dans $ rval
if [-z" $ 1 "]; then
# chaîne vide
rval = ""
return
fi
# wc met un peu d'espace derrière la sortie c'est pourquoi nous avons besoin de sed:
numofchar = `echo -n" $ 1 "| wc -c | sed 's / // g'`
if [" $ numofchar "=" 1 "]; then
# un seul caractère dans la chaîne
rval =" "
return
fi
numofcharminus1 = `expr $ numofchar" - "1`
# maintenant tout couper sauf le dernier caractère:
rval =` echo -n "$ 1" | cut -b 0- $ {numofcharminus1} `
}
while [-n" $ 1 "]; do
case $ 1 in
-h) help; shift 1 ;; # function help is called
-) shift; break ;; # fin des options
- *) error "error: no such option $ 1. -h for help" ;;
*) break ;;
esac
done
# Le programme principal
sum = 0
weight = 1
# un argument doit être donné:
[-z "$ 1"] && help
binnum = "$ 1"
binnumorig = "$ 1"
while [-n "$ binnum"]; do
lastchar "$ binnum"
if ["$ rval" = "1"]; the n
sum = `expr" $ weight "" + "" $ sum "`
fi
# supprimer la dernière position dans $ binnum
hacher "$ binnum"
binnum = "$ rval «
poids =` expr "$ poids" "*" 2`

fait echo "$ binaire est binnumorig décimal somme $"
#
le script L'algorithme utilisé est d'utiliser des poids décimaux et binaires (1,2,4,8,16, ..). Par exemple, le "10" binaire peut être converti en décimal comme ceci:
0 * 1 + 1 * 2 = 2 < BR> Pour obtenir un seul nombre binaire, nous utilisons la fonction lastchar. Cette fonction utilise wc? C pour compter le nombre de caractères, puis utilise la commande cut pour obtenir le dernier caractère. La fonction de la fonction Chop est de supprimer le dernier caractère.
Programme de cycle de fichiers
Peut-être que vous êtes l'une des personnes qui souhaitent enregistrer tous les e-mails sortants dans un fichier, mais après quelques mois, ce fichier peut devenir si volumineux que L'accès au fichier est lent. Le script de rotation de fichier suivant peut résoudre ce problème. Ce script peut renommer le message pour enregistrer le fichier (en supposant outmail) est outmail.1, et outmail.1 est devenu outmail.2 bla bla ...

Copier code code est le suivant:
# / bin / sh
# vim :! set sw = 4 = ts 4 et:
ver = "0.1"
aide ()
{
chat UTILISATION: rotationfichier [-h] nom de fichier
OPTIONS: -h texte d'aide
EXEMPLE: rotationfichier < BR> Cela renommera par exemple out.2 en out.3, out.1 en out.2, out en out.1
et créera unfichier de sortie vide
Le nombre maximum est 10
version $ ver
HELP
exit 0
}
erreur ()
{
echo "$ 1"
Quittez 1
}
tandis que [-n "$ 1"]; faites
cas $ 1 dans
-h) help; shift 1 ;;
-) break ;;
- *) echo "error: no such option $ 1. -h for help"; exit 1 ;;
*) break ;;
esac
done
# vérification d'entrée:
if [ -z "$ 1"]; puis
erreur "ERREUR: vous devez spécifier un fichier, utilisez -h pour obtenir de l'aide"
fi
filen = "$ 1"
# renommer tout .1, .2 fichier etc:
pour n dans le tableau 8 7 6 5 4 3 2 1; faites
si [-f "$ filen. $ n"]; alors
p = `expr $ n + 1` < BR> echo "mv $ filen. $ N $ filen. $ P"
mv $ filen. $ N $ filen. $ P
fi
done
# renommer le fichier d'origine:
if [-f "$ filen"]; then
echo "mv $ filen $ filen.1"
mv $ filen $ filen.1
fi
echo touch $ filen
touch $ comment fichiern
ce travail de script? Après avoir détecté que l'utilisateur a fourni un nom de fichier, nous effectuons une boucle Array to 1. File Array est nommé 10, le fichier 8 est renommé Array, etc. Une fois la boucle terminée, nous nommons le fichier d'origine en tant que fichier 1 et créons un fichier vide portant le même nom que le fichier d'origine.
Debug
BRLa commande de débogage la plus simple est bien sûr l'utilisation de la commande echo. Vous pouvez utiliser echo pour imprimer n'importe quelle valeur de variable partout où vous pensez que quelque chose s'est mal passé. C'est pourquoi la plupart des programmeurs shell passent 80% de leur temps à déboguer des programmes. L'avantage du programme shell est qu'il n'a pas besoin d'être recompilé et que l'insertion d'une commande echo ne prend pas beaucoup de temps.
Le shell a également un véritable mode de débogage. S'il y a une erreur dans le script "strangescript", vous pouvez le déboguer comme ceci:
sh -x strangescript
Ceci exécutera le script et affichera les valeurs de toutes les variables.
Shell a également un mode qui n'a pas besoin d'exécuter un script, mais vérifie simplement la syntaxe. Il peut être utilisé comme ceci:
sh -n your_script
Cela retournera toutes les erreurs de syntaxe.
Nous espérons que vous pourrez commencer à écrire votre propre script shell maintenant et espérons que vous vous amuserez.
www.xd1998.com@2001-2030Partage De Technologie