bash - 有内联 bash 脚本这样的东西吗?

标签 bash shell

我想做一些事情:

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/

相关文章:

bash - bash 中字符串的多个替换

bash - unix map 功能

linux - Bash 脚本读取文件 :argument list too long

linux - 从 perl 运行时将 bash 脚本的输出记录到日志文件和标准输出中

bash - 在bash脚本中执行时捕获Yarn作业ID

linux - 运行 shell 脚本一段时间

linux - 如何使用sudo获取运行命令的pid

linux - 如何在 Expect 脚本中返回生成的进程退出代码?

file - 查找并替换文件中的字符串

linux - date -d 无法识别格式 %d-%m-%Y