Comme je l'ai recommandé printf
dans un commentaire, je devrais probablement donner quelques exemples de son utilisation (bien que pour imprimer un message d'utilisation, je serais plus susceptible d'utiliser les réponses de Dennis ou Chris). printf
est un peu plus complexe à utiliser que echo
. Son premier argument est une chaîne de format, dans laquelle les échappements (comme \n
) sont toujours interprétés; il peut également contenir des directives de format commençant par %
, qui contrôlent où et comment tous les arguments supplémentaires y sont inclus. Voici deux approches différentes pour l'utiliser pour un message d'utilisation:
Tout d'abord, vous pouvez inclure l'intégralité du message dans la chaîne de format:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: \nup home page: \n"
Notez que contrairement à echo
, vous devez inclure explicitement la nouvelle ligne finale. De plus, si le message contient des %
caractères, ils doivent être écrits sous la forme %%
. Si vous souhaitez inclure les adresses de rapport de bug et de page d'accueil, vous pouvez les ajouter tout naturellement:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: %s\nup home page: %s\n" "$bugreport" "$homepage"
Deuxièmement, vous pouvez simplement utiliser la chaîne de format pour lui faire imprimer chaque argument supplémentaire sur une ligne distincte:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: " "up home page: "
Avec cette option, l'ajout des adresses de rapport de bogue et de page d'accueil est assez évident:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: $bugreport" "up home page: $homepage"
echo >&2 ...