执行来自外部文件的部分脚本

执行来自外部文件的部分脚本

我有一些信息存储在外部文件中。

在主脚本中,我正在解析辅助文件以确定如何处理信息。

为此我尝试这样做:

cat ./secondary.file
file:block.txt @"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'

它本质上定义了从哪里获取数据以及要做什么才能获得正确的输出。其思想是每一行都有一个新的文件:文件名引用和一种从每个文件获取一致输出的方法。

因此在主文件上我可以这样做:

source=`cat ./secondary.file | grep -Ev "^#|^$" | tr -d "\r" | cut -d@ -f2`

这给了我“方法”:

"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'

我现在正尝试将其添加到主脚本的命令管道中

... | grep -E $regex

我希望它能翻译成类似这样的话:

... | grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'

但它失败了,抱怨 grep 不是命令,awk 也是一样。我试过像这样将完整命令存储在辅助文件中

file:block.txt @grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'

但像这样在主文件上调用它:

source=`cat ./secondary.file | grep -Ev "^#|^$" | tr -d "\r" | cut -d@ -f2`
echo $source
  grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'



... | $source | ...

但还是没运气。没主意了……

相关内容