我想做一些事情:
find -name *.mk | xargs "for i in $@ do mv i i.aside end"
我意识到这可能不仅仅是错误,但我想具体了解我可以将 xargs 传递给的这种内联命令定义。
最佳答案
这个特定的命令不是一个很好的例子,但您可以通过将 sh -c 'here is the script'
作为命令来使用“内联 shell 脚本”。您可以在脚本中为其提供参数 $@ 但有一个问题:here is the script
之后的第一个参数在脚本中变为 $0,因此您必须在那里添加一个额外的词否则您将输掉第一个参数。
find . -name '*.mk' -exec sh -c 'for i; do mv "$i" "$i.aside"; done' fnord '{}' +
我利用的另一个有趣的特性是默认情况下 for 循环遍历命令行参数:for i; do ...
等同于 for i in "$@";做...
我重申,与执行批量 mv 的许多其他方法相比,上述命令是复杂且缓慢的。我发布它只是为了展示一些很酷的语法。
关于bash - 有内联 bash 脚本这样的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295659/