35 xargs
在这个例子中,我怎样才能让第二个回声来回显测试:
echo test | xargs -I {} echo {} && echo {}
Run Code Online (Sandbox Code Playgroud)
Joj*_*GME 43
只需{}在您的命令中写两次。以下将起作用:
$ echo test | xargs -I {} echo {} {}
test test
Run Code Online (Sandbox Code Playgroud)
您的问题是命令是如何嵌套的。让我们看看这个:
echo test | xargs -I {} echo {} && echo {}
Run Code Online (Sandbox Code Playgroud)
bash将执行echo test | xargs -I {} echo {}. 如果运行成功,echo {}则执行。要更改嵌套,您可以执行以下操作:
echo test | xargs -I {} sh -c "echo {} && echo {}"
Run Code Online (Sandbox Code Playgroud)
但是,您可能会遇到麻烦,因为该方法可能容易发生代码注入。当“test”被shell代码替换时,它被执行。因此,您可能应该将输入传递给带有参数的嵌套 shell。
echo test | xargs -I {} sh -c 'echo "$1" && echo "$1"' sh {}
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用-i标志,它与-I{}(这意味着替换是用 给出的{})相同:
$ echo test | xargs -i echo {} {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31045 次 |
| 最近记录: |