shell ,双循环问题

testzhang 发布于 2015/03/16 15:32
阅读 455
收藏 0

公司有个需求,根据文件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

运行结果:

加载中
0
testzhang
testzhang
问题找出来的,用sh +x 调试下,发现变量后面多了\r,过滤掉就行了
0
testzhang
testzhang
请各位大侠指点一二
0
testzhang
testzhang
大家,是我写的不够清晰吗? 给点建议呗。我自己找好久,都不知道那儿错了
0
_
_Yud

应该是换行问题 你把输出重定向的文件再看看.

your_command > output.txt

testzhang
testzhang
我把 echo 打印命令重定向到文件看了下,内容和上面的运行结果是一样的
0
Feng_Yu
Feng_Yu
str1=`ls  /home/webdev/downjpg/zhaopian`


arr=$(echo $str1|tr " " "\n")

for x in $arr; do

写这些代码的时候你就没想到路径有空格怎么办?

testzhang
testzhang
好吧,我不严谨。没想到这一步,话说问题不在这里,因为图片名称没有空格
0
testzhang
testzhang

添加文件a,b截图如下 :

文件a::



文件b:


返回顶部
顶部