GNU/Linux >> Tutoriales Linux >  >> Linux

Bash printf - Cómo imprimir una variable en Bash

Introducción

El bash printf El comando es una herramienta que se utiliza para crear una salida formateada. Es un shell integrado, similar al printf() función en C/C++, Java, PHP y otros lenguajes de programación. El comando le permite imprimir texto con formato y variables en salida estándar.

Usa printf en scripts bash para aumentar la eficiencia y la reutilización al programar.

En este tutorial, aprenderá a usar el printf Comando en Linux para imprimir variables y formatear la salida.

Requisitos previos

  • Una máquina que ejecuta Linux
  • Acceso a una terminal (Ctrl + Alt + T )

Sintaxis de Bash printf

El printf El comando acepta la siguiente sintaxis:

printf [-v var] [format specifiers] [arguments]

[-v var]

El -v opcional flag asigna la salida a [var] variable en lugar de imprimirla en la salida estándar.

[format specifiers]

Los especificadores de formato son cadenas que determinan los métodos de especificadores de formato. La siguiente sección incluye una lista de especificadores aceptados.

[arguments]

Los argumentos pueden ser cualquier valor o variable, y los [format specifiers] señalar el [arguments] . Si hay más argumentos que especificadores de formato, la cadena de formato se reutiliza hasta que interpreta el último argumento.

Si hay menos especificadores de formato que argumentos, los formatos de número se establecen en cero (0 ), mientras que los formatos de cadena se establecen en null (vacío).

Especificadores de printf

La siguiente tabla muestra printf comunes especificadores de formato y sus descripciones:

Algunos especificadores de formato aceptan modificadores de formato que modifican sus acciones. Introduzca los modificadores entre el % carácter y el carácter que especifica el formato.

Los modificadores de formato disponibles son:

  • <N> . Introduzca un número que especifique un ancho de campo mínimo. Si el texto de salida es más corto, se rellena con espacios. Si el texto es más largo, el campo se expande.
  • . (punto) . Cuando se usa con un modificador de ancho de campo, el campo no se expande para texto más largo. En su lugar, el texto se trunca.
  • - . Alinea a la izquierda el texto impreso. La alineación predeterminada es correcta.
  • 0 . Rellena los números con ceros en lugar de espacios.
  • <space> . Rellena un número positivo con un espacio y un número negativo con un signo menos (- ).
  • + . Imprime todos los números firmados (+ para positivo, - para negativo).
  • ' . Para conversiones decimales, aplica el separador de agrupación de miles a la parte entera de la salida de acuerdo con el LC_NUMERIC actual archivo.

Ejemplos de Bash printf

Los ejemplos a continuación muestran casos de uso comunes y diferentes formas de dar formato a la salida usando printf .

Si bien el comando puede imprimir variables en la terminal, es más beneficioso usarlo en scripts de bash, ya que permiten la reutilización del código y facilitan la automatización.

Salida separada con un carácter de nueva línea

A diferencia de echo , usando printf para imprimir una cadena o variable sin ningún especificador de formato, se genera el texto sin formato en una sola línea. Para agregar un carácter de nueva línea y separar las entradas, especifique el \n especificador de formato:

Un carácter de nueva línea ahora separa la salida impresa.

Imprimir múltiples variables

Usa printf para imprimir múltiples variables en la salida estándar. Siga los pasos a continuación:

1. Abra la terminal (Ctrl + Alternativo + T ) y cree un script bash usando un editor de texto como vi/vim :

vi script.sh

2. Introduzca las siguientes líneas:

#!/bin/bash
printf "Enter your name:\n"
read name
printf "Enter your surname:\n"
read surname 
printf 'Welcome: %s\n' "$name $surname"

El %s en la cadena de formato apunta a las variables definidas en las líneas anteriores, mientras que \n instruye a printf para agregar un carácter de nueva línea.

3. Guarde el script y salga de vi ingresando:

:wq

4. Ejecute el script:

bash script.sh

5. Ingrese los valores solicitados para las dos variables y verifique el resultado:

El printf El comando almacena la entrada en las dos variables y luego imprime las variables en la salida estándar.

Imprimir variable en una tabla simulada

Agregue automáticamente relleno dinámico o cambie la alineación de salida variable usando printf . Siga los pasos a continuación para imprimir una variable en una tabla simulada:

1. Cree un archivo de secuencia de comandos:

vi table.sh

2. Introduzca las siguientes líneas y guarde el script:

#!/bin/bash
var='hello'
printf '|%10s|\n' "$var"

El %10 asegura que haya diez caracteres dentro de los símbolos de tubería, rellenando la salida variable con caracteres de espacio en blanco hasta esa longitud. Los s trata la variable de entrada como una cadena.

3. Ejecute el script y verifique el resultado:

bash table.sh

El comando genera la variable encerrada en símbolos de tuberías y la alinea a la derecha de forma predeterminada. Para alinear la salida al lado izquierdo, agregue el - modificador después del % carácter en la cadena de formato:

#!/bin/bash
var='hello'
printf '|%-10s|\n' "$var"

Añadir puntos decimales

Usa printf con el %f especificador de formato para tratar la entrada como un número de punto flotante y agregar la precisión de dos lugares decimales. Siga los pasos a continuación:

1. Cree un script bash:

vi precision.sh

2. Introduzca las siguientes líneas y guarde el script:

#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "%5.2f\n" "$number"

3. Ejecute el script:

bash precision.sh

La salida imprime la variable como un número de punto flotante redondeado a dos decimales.

Almacenar datos en una variable

Usa el -v marcar con printf para asignar una variable de shell para almacenar los datos en lugar de imprimirlos en la salida estándar.

Siga los pasos a continuación:

1. Cree un script bash:

vi variable.sh

2. Introduzca las siguientes líneas y guarde el script:

#!/bin/bash
printf -v var 'Welcome'
printf '%s\n' "$var"

3. Ejecute el script:

bash variable.sh

La salida imprime el contenido de la variable almacenada.

Convertir números hexadecimales

El %d especificador de formato da instrucciones a printf para tratar la entrada como un número decimal (entero). Utilice el especificador para crear un script que convierta números hexadecimales en decimales.

Siga los pasos a continuación:

1. Cree un script bash:

vi convert.sh

2. Introduzca las siguientes líneas y guarde el script:

#!/bin/bash
printf 'Enter a hexadecimal number:\n'
read number
printf "%d\n" "$number"

3. Ejecute el script:

bash convert.sh

El script convierte el número hexadecimal de entrada en uno decimal.

Convertir números decimales a octales

Usa el %o especificador de formato para convertir números decimales a números octales. Siga los pasos a continuación:

1. Cree un guión:

vi octal.sh

2. Introduzca las siguientes líneas y guarde el script:

#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "The octal number of "$number" is %o\n" "$number"

3. Ejecute el script:

bash octal.sh

El script convierte el valor decimal ingresado a uno octal.

Imprimir fecha

Cree un script que utilice printf para mostrar la fecha actual. Siga los pasos a continuación:

1. Cree un guión:

vi datetime.sh

2. Introduzca las siguientes líneas y guarde el script:

#!/bin/bash
printf 'Today is %(%F)T\n' -1

El %F trata la entrada como un número de punto flotante, mientras que -1 indica la fecha actual.

3. Ejecute el script para comprobar si funciona:

bash datetime.sh

La salida indica la fecha y la hora actuales.

Sumar comas a los miles

Cuando trate con números, use el ' modificador para hacer que la salida sea más legible agregando comas para indicar miles. Siga los pasos a continuación:

1. Cree un script bash:

vi decimals.sh

2. Introduzca las siguientes líneas:

#!/bin/bash
printf "Enter a number:\n"
read number
printf "%'d\n" $number

3. Ejecute el script:

bash decimals.sh

Después de ingresar un número, el script utiliza printf para agregar las comas al valor de entrada automáticamente.

Obtener código ASCII de caracteres

Cree un script que use printf para generar el ASCII de un carácter de entrada valor. Siga los pasos a continuación:

1. Cree un guión:

vi character.sh

2. Ingrese las siguientes líneas y luego guarde el script:

#!/bin/bash
printf "Enter a character to get character code:\n"
read character
printf "%d\n" "'$character"

3. Ejecute el script y pruebe si funciona:

bash character.sh

El script genera el valor ASCII del carácter de entrada.


Linux
  1. Bash secuencias de comandos (I)

  2. ¿Cómo imprimir las líneas número 15 y 25 de cada 50 líneas?

  3. ¿Cómo leer una cadena como número hexadecimal en Bash?

  4. Bash + ¿Usando Printf para imprimir en formato especial?

  5. ¿Cómo puedo contar la cantidad de caracteres en una variable Bash?

Variable de exportación de bash

Cómo incrementar y decrementar una variable en Bash (Contador)

Comando Bash printf

Cómo establecer la variable de entorno en Bash

Cómo agregar un ícono al indicador de bash

¿Cómo eliminar la variable de solo lectura en bash?

    Especificador de formato Descripción
    %c Trate los argumentos como un solo carácter.
    %d Trate la entrada como un número decimal (entero) (base 10).
    %e Trata la entrada como un número de punto flotante exponencial.
    %f Trate la entrada como un número de punto flotante.
    %i Trate la entrada como un número entero (base 10).
    %o Trata la entrada como un número octal (base 8).
    %s Trate la entrada como una cadena de caracteres.
    %u Trate la entrada como un número decimal (entero) sin signo.
    %x Trata la entrada como un número hexadecimal (base 16).
    %% Imprime un signo de porcentaje.
    %Wd Imprime la W entero X dígitos de ancho.
    %(format)T Genera una cadena de fecha y hora resultante del uso de formato como cadena de formato para strftime . El argumento correspondiente puede ser el número de segundos desde Epoch (1 de enero de 1970, 00:00), -1 (la hora actual), o -2 (tiempo de inicio de shell). Si no se especifica un argumento, se utiliza la hora actual como valor predeterminado.
    \% Imprime un signo de porcentaje.
    \n Imprime una newline personaje.
    \t Imprimir una tab personaje.