在bash函数中使用管道

时间:2017-10-13 14:35:27

标签: bash

有没有办法可以将这个衬里变成bash函数?

mdfind -name autoflush.py | grep -Ev 'Library|VMWare|symf|larav' | sort

我试着这样做:

function mdf () { mdfind -name "$1" | grep -Ev 'Library|VMWare|symf|larav' | sort }

但没有成功。

我不能在bash函数中使用管道运算符吗?

我的下一个方法是:

function mdf () {
    result=mdfind -name "$1"
    grepped_result=grep -Ev 'Library|VMWare|symf|larav' $result
    sort $grepped_result   # return sort $grepped_result ?
}

我猜我的方法中存在许多概念错误。所以我很感激任何帮助和意见。

1 个答案:

答案 0 :(得分:4)

您在第一次尝试时错过了分号。

mdf() { mdfind -name "$1" | grep -Ev 'Library|VMWare|symf|larav' | sort; }

只需要一个shell语法的怪癖,你需要它。如果您将命令放在自己的行上,那么您就不需要了。

mdf() {
    mdfind -name "$1" | grep -Ev 'Library|VMWare|symf|larav' | sort
}

(我已删除了function关键字。为了兼容性,您应该编写func()function func但不要将它们合并。)

下次您遇到问题时,请尝试shellcheck.net。它是shell脚本的语法检查程序。真是个天赐之物。