如果我有一个包含三行这样的文件
line 1
line 2
curl -H 'Content-Type: application/json' -d '{"user": "joe"}' localhost/api
如何在bash中执行第三行作为命令?
我试过
$(sed '3q;d' file)
和
`sed '3q;d' file`
但似乎在这两种情况下命令只是部分执行,我没有得到正确的结果。当然,直接调用curl工作正常。
答案 0 :(得分:2)
不带引号的扩展运行字符串拆分和通配,但不是解析过程的其他阶段。因此,它不会引用引号,重定向或其他扩展。
出于安全原因,这实际上是一件好事 - 想想如果您不得不担心脚本处理的不受信任数据中存在字符串for (int i = 0; i <= Board.GetUpperBound(0); i++)
{
for (int j = 0; j <= Board.GetUpperBound(1); j++)
{
Board[i, j] = ' ';
}
}
会发生什么!
也就是说,如果您完全信任此文件的内容,则可以使用$(rm -rf ~)
在整个解析过程中运行它:
eval
答案 1 :(得分:0)
如何使用bash
标志运行-c
子流程?
bash -c "$(sed '3q;d' file)"
答案 2 :(得分:0)