如何在文本文件中将特定行作为命令运行?

如何在文本文件中将特定行作为命令运行?

有时我需要执行 shell 脚本中的单个命令。

我已经知道sed -n 'line_num p'可以打印该行。但是我怎样才能将打印出的特定行作为命令执行呢?

答案1

尝试这个:

sed -n 'line_num p' | bash

或者,如果命令不包含空格,

"$(sed -n 'line_num p')"

答案2

如果您以交互方式执行此操作,则可以将该行写入 bash 历史记录:

history -s "$(sed -n 'line_num p')"

然后按Enter将该行插入到readline缓冲区中,并执行;这让你有机会在为时已晚之前浏览一下这条线。

答案3

你可以做...

{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"

这将仅获取$NUMshell 变量中脚本中的行$line,然后将其评估为当前 shell 中的命令。

另一种方法可以是这样的:

 </path/to/script sed "${NUM}q;d" >/tmp/"$$"
 . /tmp/"$$" ; rm /tmp/"$$"

答案4

在 bash 中,您可以运行以下命令:

for line in $(cat file.txt); do command $line; done

相关内容