$ cat fav
#!/bin/bash
for i in {1..7}
do
echo http://api.stackoverflow.com/1.0/users/113124/favorites?page=$i&pagesize=100
done
$ ./fav
http://api.stackoverflow.com/1.0/users/113124/favorites?page=1
http://api.stackoverflow.com/1.0/users/113124/favorites?page=3
http://api.stackoverflow.com/1.0/users/113124/favorites?page=6
http://api.stackoverflow.com/1.0/users/113124/favorites?page=5
http://api.stackoverflow.com/1.0/users/113124/favorites?page=7
http://api.stackoverflow.com/1.0/users/113124/favorites?page=4
http://api.stackoverflow.com/1.0/users/113124/favorites?page=2
$
&pagesize=100
?答案 0 :(得分:4)
&
在后台运行一个程序,它也是一个“命令结束”指示符,就像;
一样,这就是你的命令被缩短的原因。您可以使用\
将其转义或将整个内容放在双引号中:
echo http://api.stackoverflow.com/1.0/users/113124/favorites?page=$i\&pagesize=100
echo "http://api.stackoverflow.com/1.0/users/113124/favorites?page=$i&pagesize=100"
有趣的是,pagesize=100
也作为单独的命令执行,但这实际上是一个有效的变量赋值。因此,它没有生成错误消息,这可能会让您了解正在发生的事情。
背景意味着所有的echo语句都是并行执行的。这就解释了为什么他们最终以随机顺序执行,因为七个进程将根据他们从内核获取时间片的不确定顺序完成。
答案 1 :(得分:1)
将echo参数括在引号中:
echo "http://api.stackoverflow.com/1.0/users/113124/favorites?page=$i&pagesize=100"
&
是一个shell元字符,用于在后台运行命令。将参数括在"
使&
失去其特殊含义。
答案 2 :(得分:1)
& letter是shell的关键字。它代表背景。在你的http字符串周围使用“”来使你的skript行为正确。
关于shell手册中的背景知识,这是关键功能。