J'ai la ligne suivante:
printf "---- %.55s\n" "$1 --------------"
Lorsque je lance ceci sous bash, j'obtiens l'erreur suivante:
printf: -: option non valide printf: utilisation: printf [-v var] format [arguments]
C'est parce que (je pense que) printf interprète la chaîne "----" comme le début d'un argument. J'ai essayé d'échapper à cela en utilisant "\" comme ceci:
printf "\---- %.55s\n" "$1 --------------"
Voici le résultat:
\---- content of $1 -------
Comme vous pouvez le voir, le "\" est devenu une partie de la sortie, ce qui n’est pas ce que je veux.
Donc la question est, comment puis-je persuader printf que je n'essaie pas de passer un long débat ?
-
dans la chaîne de format avec leur représentation octale (ici,\055
) devrait marcher. Certes, ce n'est pas le plus propre. Un péchéprintf '\055\055\055\055\055 %.55s\n' "$1 --------------"
Réponses:
Pour éviter un argument commençant dans
-
interprété comme une option, vous avez plusieurs alternatives:1) Déplacez les signes moins de la chaîne de format vers la chaîne d’argument, reflétant éventuellement la nouvelle longueur de la chaîne imprimée dans le champ.
%.s
spécificateur de format. Un péché:2)
bash
Les commandes intégrées acceptent--
en tant qu'option qui leur indique d'arrêter les options de traitement et de considérer tout ce qui suit comme des noms de fichiers et des arguments. Un péché:3) Vous pouvez remplacer les signes moins par leurs codes octaux. En fait, remplacer seulement le premier fonctionne, comme dans:
la source