GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo repetir un guión (guion) en shell

La útil respuesta de John1024 proporciona una solución genérica que muestra cómo eliminar la ambigüedad de las opciones de los operandos para todos Utilidades similares a POSIX.

En el caso que nos ocupa, la solución más sencilla es (funciona no solo en bash , pero también en ksh y zsh ):

printf '%.0s-' {1..100}

Colocando %.0s antes el - evita el problema de un - inicial ser confundido con una opción.

Ligeramente optimizado:

printf '%.s-' {1..100}


Recomendaría usar un for tradicional loop, ya que no hay necesidad de generar subprocesos o expandir 100 argumentos:

N=100
for((i = 0; i < $N; ++i)); do
  printf -
done

Es curioso que printf -%s desencadena "opción no válida" pero printf - no es. Quizás para estar más seguro, podrías hacer printf %s - .


Usa un for bucle y rango de números:

for i in {1..10}; 
    do echo "-"; 
done

O en una sola línea:

for i in {1..10}; 
    do echo -n "-"; 
done

que genera ---------- .

EDITAR :Esto fue antes de tu printf editar.


Esto arroja un error:

$ printf '-%.0s' {1..100}; echo ""
bash: printf: -%: invalid option
printf: usage: printf [-v var] format [arguments]

Esto funciona bien bajo bash :

$ printf -- '-%.0s' {1..100}; echo ""
----------------------------------------------------------------------------------------------------

Para otros proyectiles, intente:

printf -- '-%.0s' $(seq 100); echo ""

El problema era el printf espera que - inicia una opción. Como es común entre las utilidades Unix/POSIX en este tipo de situaciones, -- señales a printf no esperar más opciones.


Linux
  1. ¿Cómo eliminar un archivo cuyo nombre comienza con "-" (guión, también conocido como guión o menos)?

  2. ¿Cómo escapar de las comillas en Shell?

  3. ¿Cómo manejar los interruptores en un script de Shell?

  4. ¿Cómo insertar una nueva línea en el script de shell de Linux?

  5. Cómo:¿Historial ilimitado de Bash/shell?

Cómo instalar Dash Framework en Python en Linux

Cómo instalar Linux Bash Shell en Windows 10

Cómo cambiar un Shell de usuario en Linux

Cómo instalar y usar Nu Shell en Linux

¿Cómo usar if-else en Shell Scripts?

¿Cómo ejecutar un comando en un script de Shell?