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

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

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

  1. ## Function
  2. targz() {
  3. find $1 -type f -name "*.$2" -exec \
  4. bash -c 'old=$(basename {}); new=${old/%exe/tar\.gz}; \
  5. tar -zcvf $new $old; ' \;
  6. }
  7.  
  8. ## Function Call
  9. ## targz [directory] [extension]
  10. targz . 'exe';

是的我尝试过这样的事:

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

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

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

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

猜你在找的Bash相关文章