如何在find和bash -c中传递变量?

前端之家收集整理的这篇文章主要介绍了如何在find和bash -c中传递变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嘿伙计们,我遇到了将变量传递给%exe部分代码的问题.需要你的帮助.

这是我在bash脚本中使用的工作代码

## Function
targz() {
  find $1 -type f -name "*.$2" -exec \
    bash -c 'old=$(basename {}); new=${old/%exe/tar\.gz}; \
      tar -zcvf $new $old; ' \;
}

## Function Call
## targz [directory] [extension]
targz . 'exe';

是的我尝试过这样的事:

new=${old/%$2/tar\.gz};

但它生成文件名如:file.exetar.gz

尝试:
targz() {
  find $1 -type f -name "*.$2" -exec \
    bash -c 'old=$(basename {}); new=${old/'"$2"'/tar\.gz}; \
      tar -zcvf $new $old; ' \;
}

诀窍是退出单引号,以便执行变量扩展.

原文链接:https://www.f2er.com/bash/383571.html

猜你在找的Bash相关文章