GNU/Linux >> Linux Esercitazione >  >> Linux

Come ripetere un trattino (trattino) nella shell

L'utile risposta di John1024 fornisce una soluzione generica che mostra come disambiguare le opzioni dagli operandi per all Utilità simili a POSIX.

Nel caso in questione, la soluzione più semplice è (funziona non solo in bash , ma anche in ksh e zsh ):

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

Piazzando %.0s prima il - evita l'emissione di un - iniziale essere scambiato per un'opzione.

Leggermente ottimizzato:

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


Consiglierei di usare un for tradizionale loop, poiché non è necessario generare sottoprocessi o espandere 100 argomenti:

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

È curioso che printf -%s attiva "opzione non valida" ma printf - non. Forse per essere più sicuro, potresti fare printf %s - .


Usa un for ciclo e intervallo di numeri:

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

O su una sola riga:

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

che restituisce ---------- .

MODIFICA :Questo era prima del tuo printf modifica.


Questo genera un errore:

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

Funziona bene sotto bash :

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

Per altre shell, prova:

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

Il problema era il printf si aspetta che - avvia un'opzione. Come è comune tra le utility Unix/POSIX in questo tipo di situazione, -- segnali a printf non aspettarsi più opzioni.


Linux
  1. Come eliminare un file il cui nome inizia con "-" (trattino o trattino o meno)?

  2. Come sfuggire alle citazioni in Shell?

  3. Come verificare se una shell è login/interactive/batch?

  4. Come gestire gli interruttori in uno script di shell?

  5. Come creare un file temporaneo nello script della shell?

Come installare Dash Framework in Python su Linux

Come installare Linux Bash Shell su Windows 10

Come modificare una shell utente in Linux

Come installare e utilizzare Nu Shell su Linux

Come utilizzare if-else negli script della shell?

Come eseguire un comando in uno script della shell?