Je dois imprimer les trois lignes suivantes dans une seule commande d'impression sans utiliser la commande echo. J'ai donc choisi la commande printf. Voici les trois lignes:
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
Ce que j'ai fait jusqu'à présent, c'est:
printf "
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
"
Mais j'ai eu une erreur bash pour la troisième ligne ','.
Est-ce que quelqu'un m'éclairera.
command-line
bash
Narwen
la source
la source
print
commande et laprintf
commande.Réponses:
Mieux utiliser:
Vous obtenez cette erreur, comme d'autres l'ont dit ici, à cause du
%
caractère spécial qui doit être échappé.Voir
man 1 printf
pour plus d'informations.la source
/your_string_to_search
et appuyez sur entrée.printf
ce%
personnage est ce qu'il fait!%
est un caractère spécial dansprintf
. C'est ce qui cause l'erreur. Vous devez y échapper au fur et à mesure%%
.$
peut également être substitué à l'intérieur de guillemets doubles par le shell externe, vous devriez donc y échapper (\$
). Il est généralement plus simple d'utiliser des guillemets simples.la source
$variable
est remplacé par le shell, pas parprintf
. Si vous entourez votre chaîne de guillemets simples au lieu de guillemets doubles,$
elle ne sera pas interpolée par le shell et sera directement transmise àprintf
.$
est également spécial lorsqu'il est suivi par{
ou par un symbole de paramètre spécial , ou un ou plusieurs chiffres . L'idée de base de ce que vous dites est cependant correcte.le %est spécial pour printf: c'est le premier caractère dans les spécificateurs de format. Si vous voulez un pourcentage littéral, utilisez
%%
la source
Il est un peu surprenant de voir que lorsque vous n'êtes pas autorisé à utiliser la
echo
commande, vous avez choisi d'utiliser laprintf
commande à la place.Pourquoi pas
cat
?la source
$foo
dans le texte, utilisezcat <<'EOF'
plutôt quecat <<EOF
.printf
est une impression formatée qui prend une chaîne de format comme premier paramètre. Les autres paramètres sont utilisés dans la chaîne de format. Les trois choses à retenir lors de l'utilisationprintf
sont:Bien que de nombreuses langues aient des
printf
instructions / commandes / fonctions, elles diffèrent toutes un peu, vérifiez toujours les détails dans la documentation spécifique à la langue (C, bash, php, perl, etc.),Vous ne devez jamais utiliser les informations fournies par l'utilisateur dans la chaîne de format. C'est toujours une faille de sécurité. Si vous souhaitez afficher une chaîne fournie par l'utilisateur, utilisez une chaîne de format comme
"%s"
.La barre oblique inverse (
\
) et le signe de pourcentage (%
) sont tous deux des caractères d'échappement qui modifient la signification du ou des caractères suivants si vous souhaitez qu'un caractère d'échappement apparaisse dans votre sortie, il doit être échappé ou extrait d'un autre paramètre. Le signe dollar ($
) n'est pas spécial pour printf, mais est spécial pour le shell, alors faites attention à vos citations.printf
est idéal pour formater les nombres. consultez les pages de manuel pour plus de détailsla source
Comme d'autres l'ont mentionné, le
%
symbole est spécial pourprintf
.Si vous souhaitez simplement imprimer une chaîne telle quelle, donnez
printf
%s
comme premier argument et la chaîne entourée de guillemets simples comme deuxième argument:L'utilisation de guillemets simples au lieu de guillemets doubles empêche le shell d'interpoler des symboles comme
$
.la source