将字符串转换为 bash 中的参数

Converting string to argument in bash

我想使用 xargs 为 tail 形成参数。

"string" | xargs -I '{}' tail -F *{}*

这导致 tail "*{}*" 这是行不通的。如何删除引号并将其转换为 tail 的有效参数? 即 tail *string*

* 由 Bourne shell(路径名扩展)在您的命令被解析的那一刻解释,在它实际执行之前,而不是在 tail 被执行的那一刻。

如果想让xargs构建的命令受bash的路径扩展,需要执行bash:

echo "string" | xargs -I '{}' bash -c "tail -F *'{}'*"

安全问题:如果您无法控制发送到 xargs 的文件名,那么使用特制的文件名,您可能会无意中执行有害的命令。