73 votes

Exécuter un fichier texte en tant que commandes dans Bash

Si j'ai un fichier texte avec une commande séparée sur chaque ligne, comment puis-je faire en sorte que le terminal exécute chaque ligne comme une commande ? Je ne veux pas avoir à copier et coller une ligne à la fois. Il n'est pas nécessaire que ce soit un fichier texte... Il peut s'agir de n'importe quel type de fichier qui fonctionne.

example.txt :

sudo command 1
sudo command 2
sudo command 3

96voto

Chaos Points 2422

Vous pouvez faire un shell script avec ces commandes, et ensuite chmod +x <scriptname.sh> et ensuite l'exécuter par

./scriptname.sh

Il est très simple d'écrire un script bash script.

Fichier sh de la maquette :

#!/bin/sh
sudo command1
sudo command2 
.
.
.
sudo commandn

81voto

kclair Points 1066

Vous pouvez aussi simplement l'exécuter avec un shell, par exemple :

bash example.txt

sh example.txt

22voto

user1182474 Points 414

Exécuter

. example.txt

Cela fait exactement ce que vous demandez, sans mettre un drapeau exécutable sur le fichier ou lancer une instance bash supplémentaire.

Pour une explication détaillée, voir par exemple https://unix.stackexchange.com/questions/43882/what-is-the-difference-between-sourcing-or-source-and-executing-a-file-i

8voto

QuantumMechanic Points 7825

Vous pouvez utiliser quelque chose comme ça :

for i in `cat foo.txt`
do
    sudo $i
done

Cependant, si les commandes ont des arguments (c'est-à-dire s'il y a des espaces dans les lignes), vous devrez peut-être faire un peu de bricolage pour protéger les espaces afin que la chaîne entière soit vue par sudo comme une commande. Mais cela vous donne une idée sur la façon de commencer.

5voto

Oleg Neumyvakin Points 1558
cat /path/* | bash

OU

cat commands.txt | bash

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X