将字符串转换为 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
的文件名,那么使用特制的文件名,您可能会无意中执行有害的命令。
我想使用 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
的文件名,那么使用特制的文件名,您可能会无意中执行有害的命令。