Запустите текстовый файл как команды в Bash

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

example.txt:

sudo command 1
sudo command 2
sudo command 3

5 ответов

Решение

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

./scriptname.sh

Написать скрипт bash очень просто

Файл макета sh:

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

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

bash example.txt

sh example.txt

Казнить

. example.txt

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

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

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

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

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

      cat /path/* | bash

ИЛИ ЖЕ

      cat commands.txt | bash
Другие вопросы по тегам