bash - 在 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 ...]"
也许我忽略了一些东西……或者你有更好的主意:-)
解决方案
由于$4
包含扩展变量时未处理的 shell 元字符,因此您需要使用eval
它来执行它。
另外,你需要放$3
双引号,而不是单引号,否则变量不会被扩展。
version="$(grep "$3" "$1" | eval "$4" )"
推荐阅读
- react-native - 如何正确对齐同一行中的两个项目
- react-native - 如何通过按 android 硬件后退按钮在本机反应中导航到特定屏幕
- r - R ggplot 标签在非常小的值上被截断
- python - 如何获得最小的非零值
- apache - Apache 代理设置背后的 Icecast - 如何保留原始侦听器 IP
- typo3 - 在 TYPO3 中显示页面的第一个内容元素(掩码元素)
- python - 根据条件从数据框中删除几行
- typescript - TypeORM 多对多关系在保存时给出重复行
- c - 根据标准PCI总线扫描但结果异常
- c++ - C++ 使用指针返回一个数组