Запустите текстовый файл как команды в Bash - PullRequest
40 голосов
/ 22 марта 2012

Если у меня есть текстовый файл с отдельной командой в каждой строке, как заставить терминал выполнять каждую строку как команду?Я просто не хочу копировать и вставлять по 1 строке за раз.Это не должен быть текстовый файл ... Это может быть любой тип файла, который будет работать.

example.txt:

sudo command 1
sudo command 2
sudo command 3

Ответы [ 4 ]

65 голосов
/ 22 марта 2012

вы также можете просто запустить его с оболочкой, например:

bash example.txt

sh example.txt
61 голосов
/ 22 марта 2012

вы можете создать сценарий оболочки с этими командами, а затем chmod +x <scriptname.sh>, а затем просто запустить его с помощью

./scriptname.sh

Очень просто написать сценарий bash

Макетфайл:

#!/bin/sh
sudo command1
sudo command2 
.
.
.
sudo commandn
7 голосов
/ 25 января 2019

Выполнить

. example.txt

Это именно то, что вы просите, без установки исполняемого флага для файла или запуска дополнительного экземпляра bash.

Подробное описание см., Например, https://unix.stackexchange.com/questions/43882/what-is-the-difference-between-sourcing-or-source-and-executing-a-file-i

5 голосов
/ 22 марта 2012

Вы можете использовать что-то вроде этого:

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

Хотя, если у команд есть аргументы (т. Е. В строках есть пробел), вам, возможно, придется немного поэкспериментировать с этим, чтобы защитить пробел, чтобывся строка воспринимается sudo как команда.Но это дает вам представление о том, как начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...