在 Bash 中将文本文件作为命令运行

问题描述 投票:0回答:6

如果我有一个文本文件,每一行都有一个单独的命令,我如何让终端将每一行作为命令运行?我只是不想一次复制并粘贴一行。它不一定是文本文件...它可以是任何类型的有效文件。

example.txt

sudo command 1
sudo command 2
sudo command 3
linux bash ubuntu terminal command
6个回答
111
投票

您可以使用这些命令创建一个 shell 脚本,然后

chmod +x <scriptname.sh>
,然后通过

运行它
./scriptname.sh

编写bash脚本非常简单

样机sh文件:

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

97
投票

您也可以使用 shell 来运行它,例如:

bash example.txt

sh example.txt

35
投票

执行

. example.txt

这正是您所要求的,无需在文件上设置可执行标志或运行额外的 bash 实例。

有关详细说明,请参阅例如https://unix.stackexchange.com/questions/43882/what-is-the-difference- Between-source-or-source-and-executing-a-file-i


9
投票

你可以使用这样的东西:

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

尽管如果命令有参数(即行中有空格),您可能需要稍微调整一下以保护空格,以便整个字符串被

sudo
视为命令。 但它为您提供了如何开始的想法。


6
投票
cat /path/* | bash

cat commands.txt | bash

0
投票

我喜欢这样做:

$ tree -p --noreport
[drwxrwxr-x]  .
├── [drwxrwxr-x]  bin
│   └── [-rwxrwxr-x]  hello
└── [-rwxrwxr-x]  main
$ cat main
#!/bin/sh
PATH="./bin:$PATH"
hello
$ cat hello
#!/bin/sh
echo hello
$ ./main
hello
$ █

也许是不好的做法?请在评论中告诉我们。

© www.soinside.com 2019 - 2024. All rights reserved.