Tengo que imprimir las siguientes tres líneas en un comando de impresión sin usar el comando echo. Así que elegí el comando printf. Aquí están las tres líneas:
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
Lo que he hecho hasta ahora es:
printf "
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
"
Pero recibí un error bash para la tercera línea ','.
Entonces, ¿alguien me iluminará?
command-line
bash
Narwen
fuente
fuente
print
comando y elprintf
comando.Respuestas:
Mejor usar:
Obtiene ese error, como otros han dicho aquí, debido al
%
carácter que es especial y debe ser escapado.Ver
man 1 printf
para más información.fuente
/your_string_to_search
y luego presione Intro.printf
es ese%
personaje y lo que hace!%
es un carácter especial enprintf
. Eso es lo que está causando el error. Necesitas escapar de eso como%%
.$
también puede ser sustituido dentro de comillas dobles por la capa externa, por lo que debe escapar de eso (\$
). Por lo general, es más fácil usar comillas simples.fuente
$variable
se reemplaza por el shell, no porprintf
. Si rodea su cadena con comillas simples en lugar de comillas dobles,$
el shell no será interpolado y pasará directamente aprintf
.$
también es especial cuando va seguido de{
o por un símbolo de parámetro especial , o uno o más dígitos . Sin embargo, la idea básica de lo que estás diciendo es correcta.the %es especial para printf: es el principal char en especificadores de formato. Si desea un porcentaje literal, use
%%
fuente
Es un poco sorprendente ver que cuando no se te permite usar el
echo
comando, eliges usar elprintf
comando en su lugar.¿Por qué no
cat
?fuente
$foo
en el texto, use encat <<'EOF'
lugar decat <<EOF
.printf
es una impresión formateada que toma una cadena de formato como primer parámetro. El resto de los parámetros se utilizan en la cadena de formato. Las tres cosas para recordar al usarprintf
son:Aunque muchos lenguajes tienen
printf
declaraciones / comandos / funciones, todos difieren un poco, así que siempre verifique los detalles en la documentación específica del lenguaje (C, bash, php, perl, etc.),Nunca debe usar la información proporcionada por el usuario en la cadena de formato. Esto siempre es una falla de seguridad. Si desea mostrar una cadena proporcionada por el usuario, use una cadena de formato como
"%s"
.Tanto la barra diagonal inversa (
\
) como el signo de porcentaje (%
) son caracteres de escape que cambian el significado de los siguientes caracteres si desea que aparezca un carácter de escape en su salida, se debe escapar o extraer de otro parámetro. El signo de dólar ($
) no es especial para printf, pero es especial para el shell, así que tenga cuidado con sus citas.printf
es ideal para formatear números. mira las páginas del manual para más detallesfuente
Como otros han mencionado, el
%
símbolo es especial paraprintf
.Si solo desea imprimir una cadena como es, dele
printf
%s
como primer argumento, y la cadena entre comillas simples como segundo argumento:El uso de comillas simples en lugar de comillas dobles evita que el shell interpole símbolos como
$
.fuente