2011-05-25 38 views
1

一个bash下面的代码运行到错误的运行之间的不同:卷曲的行为独立,并在for循环

for i in {190..208}; do curl -k -F 'act=upload' -F '[email protected]/apk_${i}.apk' -F 'comment=md5: `md5 apks/apk_$i.apk`' https://username:[email protected]/; done 

服务器具有自签名的证书,所以,我试图关闭SSL与 - ķ。
的回复:

curl: (26) SSL: unable to obtain common name from peer certificate 
curl: (26) SSL: unable to obtain common name from peer certificate 
curl: (26) SSL: unable to obtain common name from peer certificate 
...... 
curl: (26) SSL: unable to obtain common name from peer certificate 

但是,如果我改变我的命令:

for i in {190..208}; do echo "curl -k -F 'act=upload' -F '[email protected]/apk_${i}.apk' -F 'comment=md5: `md5 apks/apk_$i.apk`' https://username:[email protected]/" >> tmp.sh; done 

bash tmp.sh 

它的工作原理没有任何警告。

我不知道为什么。

谢谢。

P.S. 一些信息。

logan $ uname -a 
Darwin Logans-MacBook.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386 
logan $ /usr/bin/curl --version 
curl 7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3 
Protocols: tftp ftp telnet dict ldap http file https ftps 
Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz 
+0

引用问题?通过在bash-shebang之后放置一个“-x”来运行它,并比较输出以验证所有内容都按预期展开。尝试更改为“ – 2011-05-25 08:37:56

+0

谢谢@Fredrik,为什么你通过评论回答我而不是创建答案?我甚至没有机会投票答案。 – Logan 2011-05-25 11:26:01

+0

问题完美回答。 。我是否需要关闭它或者做其他事情? – Logan 2011-05-25 11:30:24

回答

1

其他人提到使用“”而不是“”来正确展开$ {i}变量。

但是,这不应该影响curl的SSL检查。要回答关于“为什么bash的行为与A和B行为不同”的一般问题,请尝试将看到的输出与set -x进行比较。这完全显示了shell在变量替换和引用处理之后执行的内容。简单例子:

$ set -x 
$ echo -k "My shell is ${SHELL}" 'and my homedir is ${HOME}' 
+ echo -k 'My shell is /bin/bash' 'and my homedir is ${HOME}' 
-k My shell is /bin/bash and my homedir is ${HOME} 

如果你比较bash的输出用“+” - 前缀的行,你应该发现外壳是如何解释在这两个命令行和tmp.sh.行

+0

谢谢,'set -x'有很多帮助,我在修改引号后修复了它。 set -x'? – Logan 2011-05-25 11:27:28

+0

@Logan,'set + x'与'set -x'相反 – Phil 2011-05-25 12:22:18

0

我想你应该在你的命令中使用双引号("),而不是单引号。如果使用',则不会扩展变量$i以及不执行命令替换(md5 apks/apk_$i.apk)。

+0

谢谢,就像你说的那样。 – Logan 2011-05-25 11:28:41