我使用一个Docker容器来执行Curl。
docker run --rm --network=mynetwork tutum/curl for i in `seq 1 10`; do curl -s http://Url; done
但是输出是-bash: syntax error near unexpected token do'
。我该如何正确执行它?我想查看输出,而不必进入容器或检查其日志。
例如,这样可以正常工作:
docker run --rm -d -it --network=mynetwork tutum/curl /bin/sh
docker exec -it 4e8cb1e8c9fb bash
root@4e8cb1e8c9fb:/# for i in `seq 1 20`; do curl http://Url; done
curl: (6) Could not resolve host: url
curl: (6) Could not resolve host: url
curl: (6) Could not resolve host: url
curl: (6) Could not resolve host: url
curl: (6) Could not resolve host: url
curl: (6) Could not resolve host: url
...
$()
和反引号具有相同的效果,我只是转换到更现代的$()
,因为它有一些优点,例如嵌套的可能性,但在您的情况下这并不重要。你能否编辑你问题中的确切错误信息?现在看起来像是在done
关键字后面多了一个双引号,导致它被误解,但我不知道是什么原因导致了这个问题。 - Aarondocker run
使用/bin/sh -c
来执行它提供的命令,所以要么你在第一次尝试时打错了字,要么是有其他东西添加了额外的"
,你的 URL 包含引号,或者该命令在bash
中有效但在sh
中无效。此外,/bin/sh -c 'for i in
seq 1 10; do echo $i;done'
可以正常工作,所以我怀疑最后一个原因。 - Aaron