GNU/Linux >> Tutoriels Linux >  >> Linux

echo caractère de nouvelle ligne ne fonctionne pas dans bash

L'histoire mitigée de echo signifie que son fonctionnement par défaut varie d'un shell à l'autre. POSIX spécifie que le résultat de echo est "défini par l'implémentation" si le premier argument est -n ou tout argument contient une barre oblique inverse.

Il est plus fiable d'utiliser printf (soit en tant que commande intégrée, soit en tant que commande externe) où le comportement est mieux défini :les échappements antislash de style C et les spécificateurs de format sont pris en charge dans la chaîne de format (le premier argument).

printf 'foo\nbar\n'
printf '%s\n%s\n' foo bar

Vous pouvez contrôler l'expansion des séquences d'échappement antislash de bash est echo commande intégrée avec le xpg_echo option shell.

Placez-le en haut de n'importe quel bash script pour faire echo développe automatiquement les échappements antislash sans avoir à ajouter -e à chaque commande d'écho.

shopt -s xpg_echo
echo 'foo\nbar'

La pratique recommandée consiste à utiliser printf pour tous les nouveaux scripts.

printf '%s\n%s\n' "Hello" "World"

printf '%s\n' "Hello\nWorld"

Lorsque vous utilisez bash myfile.sh , Bash est exécuté en mode "batch", sur un séparé processus, et ne le fait pas lire son profil ou rcfile.

Lorsque vous utilisez . myfile.sh , le fichier est source par le processus shell actuel (comme si son contenu avait été tapé par vous), il voit donc vos alias actuellement définis.

En général, c'est une très mauvaise idée d'écrire des scripts qui dépendent d'une configuration de shell particulière, surtout alias, sauf si vous les définissez dans le script lui-même. (Jamais compter sur le .bashrc de l'utilisateur , même si c'est le vôtre.)


Linux
  1. Bash Echo La ligne de commande exécutée sur la ligne de commande elle-même (pas dans un script) ?

  2. La variable Curl Outfile ne fonctionne pas dans le script Bash ?

  3. Enveloppant Vs. Ne pas mettre la valeur d'une variable entre guillemets dans Bash ?

  4. bash sh - commande introuvable

  5. La commande Linux 'll' ne fonctionne pas

Commande Bash printf

L'incrémentation du compteur dans la boucle Bash ne fonctionne pas

jps ne fonctionne pas

fflush() ne fonctionne pas sous Linux

Échappez un caractère étoile (*) dans bash

Les drapeaux sed e et g ne fonctionnent pas ensemble