web-dev-qa-db-ja.com

テキストファイルをBashのコマンドとして実行する

各行に個別のコマンドを含むテキストファイルがある場合、ターミナルを各行をコマンドとして実行するにはどうすればよいですか?一度に1行ずつコピーアンドペーストする必要はありません。テキストファイルである必要はありません...動作する任意の種類のファイルを使用できます。

example.txt

Sudo command 1
Sudo command 2
Sudo command 3
44
Blainer

これらのコマンドを使用してシェルスクリプトを作成し、chmod +x <scriptname.sh>、そしてそれを実行するだけです

./scriptname.sh

Bashスクリプトを書くのはとても簡単です

モックアップshファイル:

#!/bin/sh
Sudo command1
Sudo command2 
.
.
.
Sudo commandn
64
Chaos

たとえば、シェルで実行することもできます。例:

bash example.txt

sh example.txt
65
kclair

Execute

. example.txt

これは、ファイルに実行可能フラグを設定したり、追加のbashインスタンスを実行したりすることなく、まさにあなたが求めていることを行います。

詳細な説明については、例えば https://unix.stackexchange.com/questions/43882/what-is-the-difference-between-sourcing-or-source-and-executing-a-file-i

7
David L.

次のようなものを使用できます。

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

コマンドに引数がある場合(つまり、行に空白がある場合)、文字列全体がSudoによってコマンドとして認識されるように、ホワイトスペースを保護するためにそのことを少し気にする必要があります。しかし、それはあなたに開始する方法のアイデアを提供します。

6
QuantumMechanic