在 Bash 中将文本文件作为命令运行
Posted
技术标签:
【中文标题】在 Bash 中将文本文件作为命令运行【英文标题】:Run text file as commands in Bash 【发布时间】:2012-04-07 04:53:52 【问题描述】:如果我有一个文本文件,每行都有一个单独的命令,我如何让终端将每一行作为命令运行?我只是不想一次复制和粘贴 1 行。它不一定是文本文件...它可以是任何可以工作的文件。
example.txt
:
sudo command 1
sudo command 2
sudo command 3
【问题讨论】:
脚本是文本文件,文本文件是脚本。 我不喜欢有人把书扔给偷看,放手吧.. 【参考方案1】:你可以用这些命令创建一个shell脚本,然后chmod +x <scriptname.sh>
,然后运行它
./scriptname.sh
写一个bash脚本很简单
样机 sh 文件:
#!/bin/sh
sudo command1
sudo command2
.
.
.
sudo commandn
【讨论】:
在 linux 中扩展不是强制性的(你甚至可以创建一个没有扩展的文件)。即使扩展名是 .txt 也可以使用 是的,但是你应该在你的文件的头部有这个“#!/bin/sh”,这样内核就知道它是一个shell脚本 你没有!需要编辑文件,也不需要文件顶部的#!/bin/sh
!你只需要做kclair
sez 要做的事情:sh your_file_here_and_it_can_have_any_random_filename
。
您不必更改扩展名,也不必在顶部添加shebang。如果你让它可执行chmod +x example.txt
,shell 会执行一个命令,相当于调用一个 shell,路径名作为它的第一个操作数。【参考方案2】:
你也可以只用 shell 运行它,例如:
bash example.txt
sh example.txt
【讨论】:
也可以使用 bash -x example.txt 进行调试【参考方案3】:执行
. example.txt
这完全符合您的要求,无需在文件上设置可执行标志或运行额外的 bash 实例。
有关详细说明,请参见例如https://unix.stackexchange.com/questions/43882/what-is-the-difference-between-sourcing-or-source-and-executing-a-file-i
【讨论】:
美观又简单。【参考方案4】:你可以这样使用:
for i in `cat foo.txt`
do
sudo $i
done
尽管如果命令有参数(即行中有空格),您可能需要稍微调整一下以保护空格,以便sudo
将整个字符串视为命令。但它可以让您了解如何开始。
【讨论】:
如果foo.txt
在任何一行包含多个标记,这是一个糟糕的建议。如果脚本中的每个命令确实需要sudo
,那么使用sudo -s <foo.txt
会好得多。另见mywiki.wooledge.org/DontReadLinesWithFor【参考方案5】:
cat /path/* | bash
或
cat commands.txt | bash
【讨论】:
不需要额外的过程,如果你想为bash
提供输入使用重定向以上是关于在 Bash 中将文本文件作为命令运行的主要内容,如果未能解决你的问题,请参考以下文章