首页 > 解决方案 > 在 bash 函数中使用 grep 和 cut

问题描述

我有以下 bash 代码:

function () {
   curl="$(curl -s "$2" >> "$1")"
   version="$(grep '$3' $1 | $4 )"
   echo $version
}

function "test" "https://google.com" "String" "cut -d' ' -f3 | cut -d'<' -f1"

基本上,该函数下载页面,然后使用 grep 查找特定字符串。在那次“削减”之后,进一步削减了结果。但是......不幸的是,函数内部的剪切不起作用。我只得到以下输出:

"usage: cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-s] [-d delim] [file ...]"

也许我忽略了一些东西……或者你有更好的主意:-)

标签: bashfunctioncurlgrepcut

解决方案


由于$4包含扩展变量时未处理的 shell 元字符,因此您需要使用eval它来执行它。

另外,你需要放$3双引号,而不是单引号,否则变量不会被扩展。

   version="$(grep "$3" "$1" | eval "$4" )"

推荐阅读