以命令运行bash命令

时间:2013-10-15 07:39:53

标签: bash shell .bash-profile

在我之前的question中,我创建了一个按模式恢复svn文件的命令:

svn st | grep SomeFolderA | awk {'print $2'} | xargs svn revert

现在我想让它成为一个接受参数(文件模式)的命令,并使用参数而不是SomeFolderA运行上述命令。我尝试将其添加到我的.bash_profile文件中:

function revert() {
    "svn st | grep '$1' | awk '{print \$2}' | xargs svn revert" ;
}

当我运行revert SomeFolderA时,我得到了这个输出:

-bash: svn st | grep 'SomeFolderA/' | awk '{print $2}' | xargs svn revert: No such file or directory

我也尝试使用svn的完整路径,但它仍然不起作用。我错过了什么?

2 个答案:

答案 0 :(得分:1)

使用命令字符串创建变量并执行它

function revert() {
  cmd="svn st | grep '$1' | awk '{print \$2}' | xargs svn revert"
  eval $cmd
}

答案 1 :(得分:0)

无需使用功能,推迟功能,只需使用下面的脚本:

svn st | grep "$1" | awk '{print \$2}' | xargs svn revert