如何以交互方式运行文件中的所有命令

如何以交互方式运行文件中的所有命令

我有一个有一百多行的文本文件commands.txt,每一行都是一个 shell 命令:

echo foo
...
echo bar

我想运行文件中的每一行,但我想在运行之前检查每一行。此外,有些行有通用代码,例如

ping <dest_host>

我需要为该命令写一个适当的单词。我正在尝试找到一种简单的方法来按顺序运行所有这些命令。像脚本一样运行它不是一个选项,并且复制粘贴每一行会有点乏味。

有任何想法吗?

答案1

carefully_run.sh您可以使用以下内容命名脚本:

#!/usr/bin/bash                                                                
                                                                               
while IFS= read -r -u3 cmd
do
    read -e -i "$cmd" -p "$USER $ " cmd
    eval "$cmd"
done 3<$1

然后你只需要运行

carefully_run.sh commands.txt

对于其中的每一行,commands.txt都会向您显示一个提示,其中包含已写入的行内容。然后你将有机会根据需要检查和修改它,当你按 Enter 时,它将运行该命令。然后它会向您展示下一个。

笔记:

如果commands.txt包含像这样的行

foo=bar

foo运行命令时,的值将被保留commands.txt,但在最后一个命令之后它将丢失。如果您需要保留它,并且您碰巧正在运行bash,则可以通过运行来实现

source carefully_run.sh commands.txt

代替

./carefully_run.sh commands.txt

相关内容