GNU/Linux >> Tutoriels Linux >  >> Linux

Comment répéter un tiret (trait d'union) dans le shell

La réponse utile de John1024 fournit une solution générique qui montre comment lever l'ambiguïté des options des opérandes pour tous Utilitaires de type POSIX.

Dans le cas présent, la solution la plus simple est (fonctionne non seulement dans bash , mais aussi en ksh et zsh ):

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

Placer %.0s avant le - évite le problème d'un - initial être confondu avec une option.

Légèrement optimisé :

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


Je recommanderais d'utiliser un for traditionnel boucle, car il n'est pas nécessaire de générer des sous-processus ou de développer 100 arguments :

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

Il est curieux que printf -%s déclenche "option invalide" mais printf - ne fait pas. Pour peut-être être plus sûr, vous pourriez faire printf %s - .


Utilisez un for boucle et plage de nombres :

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

Ou sur une seule ligne :

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

qui affiche ---------- .

MODIFIER :C'était avant votre printf modifier.


Cela renvoie une erreur :

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

Cela fonctionne bien sous bash :

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

Pour les autres shells, essayez :

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

Le problème était le printf attend que - démarre une option. Comme il est courant parmi les utilitaires Unix/POSIX dans ce type de situation, -- signaux à printf ne s'attendre à plus d'options.


Linux
  1. Comment supprimer un fichier dont le nom commence par "-" (trait d'union A.k.a. Dash ou Minus) ?

  2. Comment vérifier si un shell est connecté/interactif/batch ?

  3. Comment créer un fichier temporaire en script shell ?

  4. Comment accélérer la recherche dans Dash ?

  5. Comment changer de shell sous Linux

Comment installer Dash Framework en Python sur Linux

Comment installer Linux Bash Shell sur Windows 10

Comment changer un shell d'utilisateurs sous Linux

Comment installer et utiliser Nu Shell sous Linux

Comment utiliser if-else dans les scripts shell ?

Comment exécuter une commande dans un script shell ?