shell ,双循环问题
公司有个需求,根据文件a 里面的图片名字,去文件b中找到对应的要上传服务器的路径,用curl上传,现在问题来了,执行结果不对(其实是打印字符串的结果就不对),脚本和运行结果如下
脚本内容:
#!/bin/bash
str1=`ls /home/webdev/downjpg/zhaopian`
arr=$(echo $str1|tr " " "n")
for x in $arr; do
name=${x%%.*}
dizhi="123"
while read myline
do
var1=${myline%.*}
var2=${var1##*/}
if [ $name == $var2 ]; then
dizhi=$myline
echo "find dizhi:"$dizhi
dizhi=${dizhi#*//}
dizhi=${dizhi#*/}
break
fi
done</home/webdev/downjpg/picturesURL.txt
if [ $dizhi == "123" ]; then
echo $x>>tupiannotFind.txt
fi
size=`wc /home/webdev/downjpg/zhaopian/$x|awk '{print $3}'`
echo "name:"$x" ,size:"$size
echo "curl -F flen=$size -F "oldpath=data.mvbox.cn:/$dizhi" -F "file=@./zhaopian/$x" http://182.118.52.193:8081/ffaceup"
done
运行结果:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
添加文件a,b截图如下 :
文件a::
文件b:
好吧,我不严谨。没想到这一步,话说问题不在这里,因为图片名称没有空格
str1=`ls /home/webdev/downjpg/zhaopian`
arr=$(echo $str1|tr " " "n")
for x in $arr; do
写这些代码的时候你就没想到路径有空格怎么办?
我把 echo 打印命令重定向到文件看了下,内容和上面的运行结果是一样的
应该是换行问题 你把输出重定向的文件再看看.
your_command > output.txt
大家,是我写的不够清晰吗? 给点建议呗。我自己找好久,都不知道那儿错了
请各位大侠指点一二
问题找出来的,用sh +x 调试下,发现变量后面多了r,过滤掉就行了