GNU/Linux >> Tutoriels Linux >  >> Linux

Rediriger dynamiquement l'entrée standard dans un script bash

L'entrée standard peut également être représentée par le fichier de périphérique spécial /dev/stdin , donc l'utiliser comme nom de fichier fonctionnera.

file="/dev/stdin"
./myscript < "$file"

Tout d'abord, stdin est le descripteur de fichier 0 (zéro) plutôt que 1 (qui est stdout).

Vous pouvez dupliquer des descripteurs de fichiers ou utiliser des noms de fichiers de manière conditionnelle comme ceci :

[[ some_condition ]] && exec 3<"$filename" || exec 3<&0

some_long_command_line <&3

Notez que la commande affichée exécutera le second exec si la condition est fausse ou le premier exec échoue. Si vous ne voulez pas qu'un échec potentiel le fasse, vous devez utiliser un if / else :

if [[ some_condition ]]
then
    exec 3<"$filename"
else
    exec 3<&0
fi

mais les redirections suivantes à partir du descripteur de fichier 3 échoueront si la première redirection a échoué (après que la condition était vraie).


(
    if [ ...some condition here... ]; then
        exec <$fileName
    fi
    exec ./myscript
)

Dans un sous-shell, redirigez conditionnellement stdin et exécutez le script.


Linux
  1. Un script Bash peut-il être accroché à un fichier ?

  2. Rediriger Stderr de toutes les commandes suivantes à l'aide d'Exec ?

  3. Script Bash pour supprimer le fichier le plus ancien d'un dossier ?

  4. Comment vérifier la sous-chaîne dans Shell Script Bash?

  5. Comment connaître le nom du fichier de script dans un script Bash ?

Comment rediriger stderr vers stdout dans Bash

35 exemples de scripts bash

Bash Script - Comment lire l'entrée de l'utilisateur

Comment mettre en surbrillance les scripts Bash dans Vim ?

Comparer les sommes md5 dans le script bash

Comment grep pour unicode � dans un script bash