如何使用 Bash 从文件中执行 运行 命令?
How to run command from file using Bash?
我想编写 Bash 脚本 将允许我从文本文件中 运行 命令。
在文件中将是特殊词:"secretcommand" 和下一行中的正确命令。
文本文件示例:
这是
我的
秘密命令
pwd
bash
脚本
现在我想在我的脚本中找到一个 "secretcommand"。我想使用 grep -n 这样我就可以得到这个词的行,然后以某种方式将 + 1 添加到该行,这样我就可以得到下一行正确命令的行数。最后我想 运行 这个命令。我想使用 sed -f 但它不起作用或者我做错了什么。
你能帮帮我吗?
您可以尝试使用 awk 来回显正确的命令然后执行它,如下所示:
awk '/secretword/ { flag = "1" } { if(flag == "1" && != "secretword") { print ; exit 0 } }' <file | bash -
此脚本将采用一个参数,即您的文本文件的路径:
#!/bin/bash
while read -r line
do
[[ "$line" =~ ^secretcommand$ ]] || continue
read -r cmd || break
eval "$cmd"
break
done<""
要求整行完全匹配secretcommand,不能有多余的空格(可以通过改变双括号之间的正则表达式匹配来修改[[ ]]
.
请注意,从安全角度来看,对任意数据使用 "eval" 通常不是一个好主意,但鉴于您的目的恰恰是从数据文件执行代码,我假设您了解风险。
此脚本将带有秘密命令的文件作为命令行参数。
#!/bin/bash
words=`cat `
found=0
command=''
for word in ${words[@]};
do
if [ $word = 'secretcommand' ]; then
found=1
elif [ $found -eq 1 ]; then
found=0
command=$word
fi
done
if [ $command != '' ]; then
$command # run the found command
fi
我想编写 Bash 脚本 将允许我从文本文件中 运行 命令。
在文件中将是特殊词:"secretcommand" 和下一行中的正确命令。
文本文件示例:
这是
我的
秘密命令
pwd
bash
脚本
现在我想在我的脚本中找到一个 "secretcommand"。我想使用 grep -n 这样我就可以得到这个词的行,然后以某种方式将 + 1 添加到该行,这样我就可以得到下一行正确命令的行数。最后我想 运行 这个命令。我想使用 sed -f 但它不起作用或者我做错了什么。
你能帮帮我吗?
您可以尝试使用 awk 来回显正确的命令然后执行它,如下所示:
awk '/secretword/ { flag = "1" } { if(flag == "1" && != "secretword") { print ; exit 0 } }' <file | bash -
此脚本将采用一个参数,即您的文本文件的路径:
#!/bin/bash
while read -r line
do
[[ "$line" =~ ^secretcommand$ ]] || continue
read -r cmd || break
eval "$cmd"
break
done<""
要求整行完全匹配secretcommand,不能有多余的空格(可以通过改变双括号之间的正则表达式匹配来修改[[ ]]
.
请注意,从安全角度来看,对任意数据使用 "eval" 通常不是一个好主意,但鉴于您的目的恰恰是从数据文件执行代码,我假设您了解风险。
此脚本将带有秘密命令的文件作为命令行参数。
#!/bin/bash
words=`cat `
found=0
command=''
for word in ${words[@]};
do
if [ $word = 'secretcommand' ]; then
found=1
elif [ $found -eq 1 ]; then
found=0
command=$word
fi
done
if [ $command != '' ]; then
$command # run the found command
fi